由于我无法找到解决方案,我认为我会始终返回一个承诺,并让我的指令在 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
但我得到应用已经在进行中的错误。我在这里想念什么?