angularjs $watch watchExpression с обещанием входит в бесконечный цикл дайджеста

Метод наблюдения angularjs с watchExpression, возвращающий обещание.

$scope.$watch(function() {
var promise = MyService.getMethod();
promise.then(function(value){
  return value;
})
}, function(newValue, oldValue) {
console.log("new value:", newValue);
});

Машинописный вызов метода с обещанием.

public getMethod(): angular.IPromise<any> {
  var deferred: angular.IDeferred<any>   = this.$q.defer();
  localforage.getItem(‘key’).then(function(value) {
    deferred.resolve(value);
  }).catch(function(err) {
    deferred.reject();
    console.log(err);
  });
  return deferred.promise;
}

Я хочу вернуть "значение" из обещания localforage в MyService, чтобы вернуться к функции $watch watchExpression.

1 ответ

Вы можете использовать localforage.bind для прямой привязки значения хранилища к области видимости:

localforage.bind($scope, {key: 'key', scopeKey: 'scKey'});

И использовать двустороннюю связь $scope.scKey,

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