[英]Accessing a variable inside a Factory's callback function outside of it in angular
我的工廠如下所示:
.factory('MyFactory', function(){
return: {
someFunction: functon(firstParam, secondParam, resultObject) {
$http.get(url).success(resultObject);
}
}
})
我的控制器如下所示:
.controller('MyCtrl', function($scope) {
MyFactory.someFunction(paramOne, paramTwo, function(resultObj) {
$scope.result = resultObj;
console.log($scope.result) //has the object
});
console.log($scope.result) //undefined
}):
我希望$scope.result
在控制器內可用,而不僅僅是在回調內可用。 現在,它僅在回調函數中可用。
我了解問題出在哪里,回調函數內部的變量范圍在函數內結束,我只是不知道如何克服這個問題。
問題不在於變量的范圍是否在回調函數之內,而是在於當您在控制器內部的函數之外執行console.log($ scope.result)時,$ http請求尚未完成,因此它將未定義。
請求完成后,您可以在控制器內訪問$ scope.result。 解決此問題的最佳方法是確保$ http請求在控制器加載之前完成,這可以通過在路由中使用resolve函數來實現。 您將觸發$ http請求,並等待其完成,甚至沒有加載路由,因此結果可以直接注入到控制器中。
以下是解釋此概念的鏈接: http : //odetocode.com/blogs/scott/archive/2014/05/20/using-resolve-in-angularjs-routes.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.