Мені потрібні деякі вказівки, щоб використати найкращі практики для мого завдання в AngularJS.
Завдання:
- Всередині подання: у мене є один батьківський контролер і два дочірні контролери.
- Дочірні контролери працюють із власними $ -обсягом та об'єктами.
- Коли я натискаю кнопку Save у поданні, мені потрібно отримати дані від дочірніх контролерів до батьківського контролера, щоб підготувати об’єкт для розміщення його на сервері.
Я плутаюся, що є найкращим рішенням для цього підходу.
Відповіді:
5 за відповідь № 1Поширеним способом обміну даними між контролерами є використання використання a сервіс.
Ви могли б також мовлення оновлення батьківського контролера
1 для відповіді № 2
Є багато різних способів досягти цього ..
- Використання $ rootScope.
- Користування послугами
- Використовуйте трансляцію та випромінювання
- Оголосіть об’єкт у батьківському контролері, а потім змініть той самий об’єкт у дочірньому контролері.
Використання $ rootScope не є хорошим підходом, оскільки змінна $ rootScope руйнується при закритті програми.
Я також не буду рекомендувати BroadCast чи випромінювати, поки це не буде потрібно.
Сервіси, добре для комунікаторів чорно-білих контролерів, але ви знову вводите його та модифікуєте методи.
У вашому сценарії я б рекомендував використовувати загальну змінну об'єкта $ scope, яка оголошена всередині батьківського і використовується в дочірніх контролерах, оскільки всі методи успадковуються у дочірніх контролерах.
0 для відповіді № 3
Існує три загальних способи обміну даними між контролерами:
1 покладіть дані на сервісне обслуговування або на завод. Оскільки вони одинарні, будь-який контролер, якому вводиться одна і та ж послуга, може обмінюватися даними в цій службі
2 помістіть дані $rootScope
3 використання $broadcast
або $emit
надсилати події між областями та передавати спільні дані як аргументи подій