[英]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.