angular中使用了broadcast和on,为什么on里面的代码不是每次都成功运行?

var app = angular.module('gzmu', ["ngRoute",'chart.js']);

app.run(function ($rootScope, $http) {


    $http({

        method: 'GET',

        url: 'datacon/user_info.php',


    }).success(function (response) {




            $rootScope.userinfo = response[0];

        console.log($rootScope.userinfo)

        $rootScope.$broadcast("userinfo", response[0]);




    })

});

app.controller('data', function ($scope, $http, $rootScope) {

    $scope.usernamea='';

    $scope.$on("userinfo",

        function (event, msg) {

            console.log(msg);

            if(msg){

                $scope.usernamea = msg.user;

                console.log($scope.usernamea)

                alert($scope.usernamea)

            }

            else{

                alert(msg)

            }


        });

});

如题,on里面的代码为什么不会每加载一次页面都运行一次?

慕勒3428872
浏览 441回答 1
1回答

慕容森

主要原因是在app的run中broadcast其实是一个异步操作,如果说data这个Controller在run中的请求成功并且broadcast之前创建,就会成功调用,否则它接收不到root广播过来的信息
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript