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 ();

Второе: есть плагин с капюшоном, написанный Элмаром и мной. Это решило большинство ваших основных задач. Это было бы самым простым способом в этом случае.

Другие вопросы по тегам