[英]angularjs promise then not called first time
這是Angularjs $ http的后續問題, 等待響應
由於我無法為此找到解決方案,因此我認為我將始終返回一個promise並讓我的指令在promise.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(),但是我正在獲取應用程序進行中錯誤。 我在這里想念什么?
我相信這是因為您在退貨之前已經解決了它。 我可能是錯的。
嘗試這個:
$scope.getVCard = function(id){
var vcardKey = vcardKeyPrefix+id,
vCardFromLS = localStorageService.get(vCardKey),
deferred = $q.defer();
if(vCardFromLS){
$timeout(function(){
deferred.resolve({data:vCardFromLS});
}, 100);
} else {
$timeout(function(){
deferred.reject();
}, 100);
}
return deferred.promise;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.