繁体   English   中英

在angular之外访问Factory的回调函数内部的变量

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM