AngularJS + Hoodie: Как сделать правильный поток данных?
Я хотел бы объединить AngularJS и Hoodie, но я не уверен, как это сделать правильно. Допустим, у меня есть базовый контроллер AngularJS
app.controller("c", function($scope) {
$scope.table = [];
$scope.onAdd = function(newEntry) {
$scope.table.push(newEntry);
};
});
После нажатия, например, на
<button ng-click="onAdd('test');">add</button>
Все работает как положено. Но теперь я хочу использовать балахон. В настоящее время я пытаюсь это:
app.controller("c", function($scope) {
$scope.table = [];
$scope.onAdd = function(newEntry) {
$scope.table.push(newEntry);
};
hoodie.store.on('entries:add', $scope.onAdd);
});
и где угодно: hoodie.store.add("entries", tmpObject);
onAdd()
вызывается и вставляется в table
массив (проверено в консоли разработчика), но моя HTML-таблица (через ng-repeat="entry in table"
) не обновляется.
Первый вопрос: знаете ли вы почему? Что я тут не так думаю?
Второй вопрос: что было бы хорошим способом объединить Hoodie и AngularJS? Было бы лучше $watch
на столе и вставьте в него предметы и сохраните его через Hoodie после внесения изменений или наоборот и добавьте новый предмет в hoodie.store, а затем включите ("records:add") какие-нибудь вещи в Angular?
Заранее спасибо!
1 ответ
Хейхо =)
Во-первых: если вы обновляете структуру данных с помощью "внешнего" события (в данном случае балахон), вам нужно запустить цикл дайджеста, например, $rootScope.$ Apply ();
Второе: есть плагин с капюшоном, написанный Элмаром и мной. Это решило большинство ваших основных задач. Это было бы самым простым способом в этом случае.