С голямата сила идва и голямата отговорност.

Несъмнено Angular ви дава сила. Но трябва да го използвате разумно. Опитах се да формулирам три прости правила, които нарушавах и страдах много пъти.
1. Направете копие на обекта, ако може да бъде обект на нежелани промени.
В Angular данните са същите по подразбиране и ако ги промените нарочно, случайно или по погрешка, всички места, където ги използвате, са изложени на риск. Например имаме фабрика от празни обекти, които ще се използват за попълване на формуляри.
И след това в контролера на формуляри създаваме този празен обект в $scope и го използваме като модел на формуляр.
Какво се случва, ако този модел се промени при въвеждане на формуляра и след това отново се извика mapper.createEmptyPetition() за друг формуляр? Тъй като един и същ екземпляр на обекта emptyObject се използва навсякъде, промените ще бъдат отразени в него и следващия път, когато извикаме mapper.createEmptyPetition(), ще получим мръсен и използван обект. Може да има много такива моменти по време на разработката и трябва да внимавате с разпределянето на препратки към обекти отдясно и отляво. В този случай трябва да направите нещо подобно - да върнете копие на обекта, така че промените му да не засягат оригиналния обект:
2. Не губете препратката към обекта/масива, ако не искате да загубите синхронизирането на данни
Прост пример. Имаме контролер с масив в $scope и функция за изчистване на масива:
И някъде в изгледа предавате масива на някаква директива, например, която ще го изчертае.
3. Бъдете внимателни с дъщерния $scope
Вместо това трябва да имате специален обект в $scope за такива неща, да го наречемviewModel
И тук можете да получите грант за тестов период на Yandex.Cloud. Необходимо е само да въведете "Habr" в полето "секретна парола".