为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕勒3428872 2018-08-28 09:47:27
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里面的代码为什么不会每加载一次页面都运行一次?
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

主要原因是在app的run中broadcast其实是一个异步操作,如果说data这个Controller在run中的请求成功并且broadcast之前创建,就会成功调用,否则它接收不到root广播过来的信息


查看完整回答
反对 回复 2018-10-20
  • 1 回答
  • 0 关注
  • 440 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号