Дайте мне знать, если вам нужна дополнительная информация для решения этой проблемы.
Я пытаюсь получить локальные данные с помощью фабрики и вызывать ее из контроллера.
Контроллер.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
. И связанная фабрика:
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 в контроллере? Я также новичок в обещаниях, так что это может быть то, что я испортил, хотя это также вело себя так же при использовании обратного вызова на фабрике вместо обещания.
type
), консоль возвращает правильное значение, но когда я запрашиваю весь объект,type
возвращается какundefined
. Это происходит только тогда, когда я включаю строку с$scope.distractions
. - person willthefirst   schedule 04.01.2014periodBeingUsed
постоянно былfalse
в обоихconsole.log
). Если возможно, добавьте несколько шагов/инструкций для воспроизведения проблемы и/или опубликуйте SSCCE. - person gkalpak   schedule 05.01.2014