Я новачок у AngularJS і намагаюся створити собі просте маленьке додаток. У мене є дані JSON для того, щоб додаток отримував $resource
, і ці дані повинні бути однаковими для кількох переглядів / маршрутів. Однак, коли я переходжу до нового маршруту, дані JSON (зберігаються як $scope.data
) більше не доступний для нового перегляду. Що я можу зробити, щоб передати ці дані до нового перегляду та не вимагати іншого отримання? (Додаток-підручник-додаток-телефон-каталог щоразу отримує ці дані з того, що я можу сказати.)
З того, що я розумію, $rootScope
може це зробити, але, здається, це взагалі нахмурилося. Прошу вибачення, якщо це не має великого сенсу; я дуже пірнаю в глибокому кінці тут.
Відповіді:
17 за відповідь № 1Використовуйте послугу для зберігання даних. Введіть цю службу в кожен контролер, який потребує доступу до цих даних. Щоразу, коли контролер створюється та виконується (оскільки ви переходите на інший вигляд / маршрут), він може запитати у служби дані. Якщо служба ще не має даних, вона може надіслати запит на сервер і повернути обіцянку контролеру (див. Нижче, як це зробити). Якщо служба має дані, вона може повернути їх контролеру негайно.
Дивись також Обробка відповіді $ http у сервісі
Зауважте, що служби одинакові, на відміну від контролерів.
Ще одна варіація: коли сервіс створений, він може перенести самі дані, а потім зберегти їх для подальшого використання. Контролери можуть, ніж $ переглядати властивості або функції сервісу. Приклад такого підходу див Як зберігати поточний контекст користувача у Angular?