З великою силою приходить і велика відповідальність

Безперечно, ангуляр дає вам силу. Але користуватися нею треба з розумом. Я постарався сформулювати три прості правила, які я багато разів порушував і страждав від цього.
1. Робіть копію об'єкта, якщо він може зазнати небажаних змін.
В ангулярі дані за замовчуванням є єдиними, і якщо ви зміните їх навмисно, випадково або внаслідок помилки, під загрозою опиняться всі місця його використання. Наприклад, у нас є фабрика порожніх сутностей, які будуть використані для заповнення форм.
І далі, в контролері форми ми створюємо в $scope цей порожній об'єкт і використовуємо його як модель форми.
Що буде, якщо при введенні форми ця модель зміниться, а потім викликати mapper.createEmptyPetition() знову для іншої форми? Оскільки скрізь використовується той самий екземпляр об'єкта emptyObject, зміни будуть відображені в ньому, і при наступному виклику mapper.createEmptyPetition() ми отримаємо брудний і використаний об'єкт. Подібних моментів при розробці може виникати безліч, і потрібно обережно ставитись до роздачі посилань на об'єкти праворуч і ліворуч. В даному випадку слід було б зробити ось так — повертати копію об'єкта, щоб її зміни не стосувалися оригінального об'єкта:
2. Не втрачайте посилання на об'єкт/масив, якщо не хочете втратити синхронізацію даних
Простий приклад. У нас є контролер, у $scope якого лежить масив, і є функція для очищення масиву:
І десь у юшці ви віддаєте масив у якусь директиву, наприклад, яка його відмалює.
3. Будьте уважні з дочірніми $scope
Натомість, потрібно мати для таких справ спеціальний об'єкт у $scope, назвемо йогоviewModel
А у нас тут можна отримати грант на тестовий період Яндекс.Хмари. Варто лише у полі «секретний пароль» запровадити «Хабр»