0

我正在使用 resolve/promise 在路由中定义我的 rootScope 变量,因为我希望该变量在控制器执行之前可用。

$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>

我没有在 javascript 中使用 rootScope,因为 rootScope 没有在 javascript 中定义。

但这不起作用。我的疑问是我是否可以在这里使用控制器。否则,如何在 javascript 中获取此值。请帮忙。

4

1 回答 1

-1

添加 $timeout 将提供足够的时间来获取可供 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;
                }]
            }
        });

这正在起作用。

于 2013-08-23T18:36:36.353 回答