これはAngularjs $http wait for responseのフォローアップの質問です
そのための解決策を見つけることができなかったので、常に約束を返し、ディレクティブが 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() は初めて呼び出されません。それは呼び出され、その後のマウスオーバーで正常に動作します。何が問題になる可能性がありますか?
直前に $scope.$apply() を追加しようとしましreturn deferred.promise
たが、すでに適用中のエラーが発生しています。ここで何が欠けていますか?