Сообщите мне, если вам нужна дополнительная информация для решения этой проблемы.
Я пытаюсь получить локальные данные с помощью factory и вызывать его из контроллера.
Controller.js:
storage.getAllLocalInfo().then(function(data){
console.log(data.distractions[0].type);
// produces 'url'
// console.log(data.distractions);
// produces the following
// 0: Object
// oldTxt: "youtube.com"
// txt: "youtube.com"
// type: undefined
$scope.distractions = data.distractions;
// This only happens when executing the line above.
// Without that line, there is no inconsistency.
});
Как это сделать, если я попрошу вложенное свойство (type
), консоль вернет правильное значение, но когда я попрошу весь объект, type
возвращается как undefined
. Это происходит, когда я включаю строку с $scope.distractions
. И связанный factory:
var getAllLocalInfo = function() {
var deferred = $q.defer();
chromeStorage.get( null , function( data ) {
if (!data) {
deferred.reject();
} else {
deferred.resolve(data);
}
});
return deferred.promise;
};
Может ли кто-нибудь объяснить странное поведение console.log в контроллере? Я также новичок в promises, так что это может быть то, что я испортил, хотя это также походило на то же самое при использовании обратного вызова в factory вместо обещания.