javascript - angular中使用了broadcast和on,为什么on里面的代码不是每次都成功运行?
程序员文章站
2022-05-02 11:49:41
...
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里面的代码为什么不会每加载一次页面都运行一次?
回复内容:
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里面的代码为什么不会每加载一次页面都运行一次?
主要原因是在app的run中broadcast其实是一个异步操作,如果说data这个Controller在run中的请求成功并且broadcast之前创建,就会成功调用,否则它接收不到root广播过来的信息
下一篇: base64编码解码图片问题