2013-08-23 47 views
0

我使用resolve/promise在路由中定義了我的rootScope變量,因爲我希望此變量在控制器執行前可用。獲取在resolve/promise中定義的AngularJS範圍變量(在javascript內)

$routeProvider.when('/', { 
      templateUrl: 'test.html', 
      controller: 'test', 
      resolve: { 
       ccApp: ['$q','$rootScope','$location',function($q,$rootScope,$location) { 

        var defer = $q.defer(); 
        $rootScope.testString = "This is just a test data"; 

        defer.resolve($rootScope.testString); 
        return defer.promise; 
       }] 
      } 
     }); 

,我試圖訪問這在我的javascript爲:

<script type="text/javascript" >   
    var testString = $('[ng-controller="test"]').scope().testString; 
</script> 

我沒有使用rootScope的JavaScript內的rootScope沒有在JavaScript中定義。

但這不起作用。我的疑問是我是否可以在這裏使用控制器。否則,我怎樣才能得到這個值在JavaScript內。請幫忙。

回答

-1

添加$超時將提供足夠的時間讓範圍可用於JavaScript讀取值。

$routeProvider.when('/', { 
      templateUrl: 'test.html', 
      controller: 'test', 
      resolve: { 
       ccApp: ['$q','$rootScope','$location','$timeout',function($q,$rootScope,$location,$timeout) { 

        var defer = $q.defer(); 
        $rootScope.testString = "This is just a test data"; 

        $timeout(function() { 
          defer.resolve($rootScope.testString); 
        } 
        return defer.promise; 
       }] 
      } 
     }); 

現在這個工作。