簡體   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