У мене є 3 модулі AngularJS, M
модуль, який повинен бути модель власник / менеджер та ще 2 модулі app
який є основним модулем і A
який буде маніпулювати даними M
модуль. І те, і інше app
і A
мають залежність від M
.
Для простоти модель - це просто масив імен тварин, і я хочу додати нові імена з модуля A
тих, кого я очікую побачити, відображених у списку, контрольованому app
модуль
Це плач ілюструє випадок.
Я застосував шаблон посередника, як пропонується в цьому stackoverflow питання так що мій модельний модуль M
опублікує свої зміни передплатниками.
app
має контролер NamesListCtrl
що зчитує дані з NamesModel
завод з M
, та підписується на його подію NamesModelChanged
що публікується щоразу, коли внутрішні дані всередині NamesModel
змінено
Проблема: коли анонімний зворотний дзвінок для NamesListCtrl
передплата на NamesModelChanged
називається (рядок 87 на планку), заявою $scope.data.namesList = NamesModel.getAll();
не буде отримувати оновлені дані:
NamesModel.subscribe("NamesModelChanged", function() {
console.log("OK, I will update my data");
// not getting the updated list
$scope.data.namesList = NamesModel.getAll();
});
Будь-яка допомога?
Відповіді:
0 для відповіді № 1У той час, коли буде контролер і модельініціалізувати і сторінка завантажувалася, вам потрібно буде ініціалізувати змінну $ scope.data.namesList і призначити дані в цьому, за допомогою $ scope.data.namesList = NamesModel.getAll (); , тоді, коли ви коли-небудь зателефонуєте їй, він поверне оновлені дані. Висновок полягає в тому, що коли ви створюєте змінну області спочатку, вам потрібно зробити це об'єктом / змінною реального часу.
0 для відповіді № 2
Дві речі вирішили:
1) The publish
зателефонував зсередини NamesModel
завод повинен включати list
так що subscribe
callback в інших контролерах отримає свіжі дані, тому припускаючи, що callback називає опублікований список як newList
, просто телефоную $scope.data.namesList = newList
оновить дані в NamesListCtrl
.
2) Тоді $scope.$digest()
потрібно викликати, щоб змусити оновити інтерфейс.
Ось нова робоча плач
Дякую Глини, і Джигар Праджапаті за вашу допомогу.