Модель angularjs не обновляется после запроса от pouchdb

Я пишу приложение angularjs с помощью PouchDB. Я не могу получить обновленный шаблон после запроса из базы данных. Я загрузил данные из XML2JSON, затем поместил их в pouchdb. Вот сделка.

Если я использую это для заполнения данных для просмотра, все будет в порядке.

  $http.get('Katalog_27_11_2014_21_41_21.xml').then(function(resp) {
  console.log(resp);
  return resp.data;
}).then(function(string) {
  var jsonData = xmlParser.xml_str2json(string);
  var outPutJSON = [];
  console.log(jsonData);
  angular.forEach(jsonData.Catalog.Item, function(value, key) {
    Database.put(value.EANs.EAN,value);
    outPutJSON.push(value);
    console.log(value);
  });

  $scope.products = outPutJSON;
});

но если я использую запрос из pouchdb, представление пусто, я вижу данные в консоли и даже в ng-инспекторе, но не в представлении. Я думаю, что мне нужен пользователь $ scope.apply () для обновления представления и модели, но это то, что я получаю TypeError: undefined не является функцией {stack: (...), message: "undefined is not a function" } Речь идет о пустом. Я не могу понять, где ошибка ...:]

  Database.queryDocs().then(function(doc) {
  var _products = [];
  log.debug(doc);
  angular.forEach(doc.rows, function(value, key) {
    log.debug(value);
    _products.push(value.doc.data);
  });
  $scope.products = _products;
  // $scope.apply();
  log.debug($scope.products);
})
.catch(function(argument) {
  log.debug(argument);
});

ОБНОВИТЬ

Я добавил это, теперь он волшебным образом работает, но до сих пор не знаю почему. Потому что я использую то же самое в другом приложении (Ionic), и есть рабочий - угловой 1.2.7. Я запутался. Вот 1.3.4

$scope.$apply(function(){
    $scope.products = _products;
  })

person user3676101    schedule 29.11.2014    source источник
comment
Вы неправильно написали $ apply () - может быть, в этом проблема?   -  person Alan    schedule 30.11.2014


Ответы (2)


Цикл дайджеста запускается с использованием $ scope. $ Apply (), а не $ scope.aplly ().

person Alan    schedule 29.11.2014
comment
Да, это $ scope. $ Apply (), я написал $ scope.apply () Теперь он работает. : D Спасибо - person user3676101; 30.11.2014

Здесь была опечатка. Я использую $ scope.apply ();

person user3676101    schedule 29.11.2014
comment
У вас есть знак доллара перед подачей заявки? $ применять (), не применять ()? - person Alan; 30.11.2014