0
這是Angularjs $http wait for responseangularjs答應將不調用第一次
因爲我無法找到一個解決方案的後續問題,我想我會一直返回一個承諾,讓我的指令做承諾工作.then()函數。
$scope.getVCard = function(id){
var vcardKey = vcardKeyPrefix+id;
var vCardFromLS = localStorageService.get(vCardKey);
if(vCardFromLS){
var deferred = $q.defer();
deferred.resolve({data:localStorageService.get(vCardKey)});
return deferred.promise;
}
}
,在我的指導,我使用它作爲
(function(angular, app) {
app.directive('popOver',["$window","$http",function($window,$http){
return function(scope,elem,attrs){
elem.on('mouseover',function(){
console.log('mouseover');
var promise = scope.$apply(attrs.popOver);
promise.then(function(data){
console.log('promise then called');
console.log(data);
//logic here
});
console.log('in directive again');
console.log(data);
});
};
}]);
})(angular, app);
但promise.then()是沒有得到調用上的第一次。它被調用,並在隨後的鼠標懸停工作正常。可能是什麼問題?
我試着在return deferred.promise
之前添加$ scope。$ apply(),但我正在申請已經進行中的錯誤。我在這裏錯過了什麼?
如果'vCardFromLS'發現你只返回一個承諾。你確定它一直存在嗎? – robertklep
是啊......它總是在那裏。實際上,如果找不到該項目,我會觸發$ http請求。 –
我想你使用'scope。$ apply'混淆了Angular。 [Here](http://plnkr.co/edit/ASlH0io9QGuObUVWz5CC?p=preview)是一個輕微的重寫版本,似乎工作正常。 – robertklep