【问题标题】:Angular $rootScope Properties undefined after Asynchronous API [duplicate]异步API后未定义Angular $rootScope属性[重复]
【发布时间】:2016-12-11 05:48:02
【问题描述】:

我有主控制器:

.controller('mainCtrl', ['$scope', '$rootScope', 'Data', '$http', '$log', '$filter', '$q', '$timeout', function($scope, $rootScope, Data, $http, $log, $filter, $q, $timeout){

            Data.get('customers').then(function(data){
                $scope.customers = data.data;
                $rootScope.language = data.data[0].language;
            });

            $rootScope.word_pub_curr_lang = 'word_pub_' + $rootScope.language;
            console.log('from maincrtl', $rootScope.word_pub_curr_lang);

    }]);

问题是我无法接收 $rootScope.word_pub_curr_lang 或 $rootScope.language - 始终未定义。

【问题讨论】:

    标签: angularjs asynchronous scope rootscope


    【解决方案1】:

    它变得未定义,因为它在你真正从请求中获取值之前被打印出来,把它们放在里面,

    controller('mainCtrl', ['$scope', '$rootScope', 'Data', '$http', '$log', '$filter', '$q', '$timeout', function($scope, $rootScope, Data, $http, $log, $filter, $q, $timeout){
                Data.get('customers').then(function(data){
                    $scope.customers = data.data;
                    $rootScope.language = data.data[0].language;
                    $rootScope.word_pub_curr_lang = 'word_pub_' + $rootScope.language;
                   console.log('from maincrtl', $rootScope.word_pub_curr_lang);
                });
    
        }]);
    

    【讨论】:

    • 是的,我知道,但我想让它在任何地方都可以访问,在其他控制器中,查看...
    • @andrzej 得到结果后,你可以从任何地方访问它
    猜你喜欢
    • 2020-09-30
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 2020-11-16
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    相关资源
    最近更新 更多