[英]AngularJS Return a promise inside a event
我在run
函數中有一個$routeChangeSuccess
事件。 我喜歡用$http
加載某些東西,而不是更改$template
。 問題在於$http
是異步的。 我試圖在活動中返回承諾。 沒有成功。 是否有可能還是我需要直接使用jquery來加載沒有$http
資源?
app.run(["$rootScope", "$http", "$location", "$q", "localize", function($rootScope, $http, $location, $q) {
$rootScope.$on("$routeChangeSuccess", function(event, current, previous) {
var promise = $q.defer();
//load something and resolve promise when everything is ready
return promise;
});
}
]);
$ q.defer方法不返回承諾。 它返回一個延遲的對象。 您需要返回deferred.promise以返回承諾。
將您的代碼更改為
var deferred = $q.defer();
// load something and resolve promise when everything is ready
// resolve it using deferred.resolve('foo');
return deferred.promise;
$rootScope.$on("$routeChangeSuccess", function(event, current, previous) {
return $http.get(some_url)
.success(function(data){
// do something with the data
return myChangedData;
})
.error(function(data){
// do something on error, $broadcast?
return myError;
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.