Angular 广播不工作
Angular Broadcast not working
我无法向其他控制器广播,因为我没有父子关系,因此,使用 $rootScope 向其他控制器广播更改。
请帮我找出代码中的问题。
function serverController( server, $state, $rootScope, $timeout)
{
var vm = this;
vm.loader = false;
(function tick() {
server.setRootScope().then(
function(response){
angular.forEach(response.data, function (val) {
val['serverState'] = (val.status == 'running')?true:false;
$rootScope.servers[val.id] = val;
});
vm.servers = $rootScope.servers;
$rootScope.$broadcast('serverUpdated', [1,2,3]);
console.log('serverUpdated', [1,2,3]);
}
);
$timeout(tick, 25000);
})();
}
function serverManageController(server, $state, $rootScope, $stateParams)
{
var vm = this;
$rootScope.$on('serverUpdated', function(event, mass) {
console.log('serverUpdated');
console.log(mass);
});
}
像这样修改刻度函数。
function tick() {
server.setRootScope().then(
function(response){
angular.forEach(response.data, function (val) {
val['serverState'] = (val.status == 'running')?true:false;
$rootScope.servers[val.id] = val;
});
vm.servers = $rootScope.servers;
$rootScope.$broadcast('serverUpdated', [1,2,3]);
console.log('serverUpdated', [1,2,3]);
}
);
};
$timeout(function(){
$interval(tick, 25000);
},2000);
它应该会像您预期的那样工作。
我无法向其他控制器广播,因为我没有父子关系,因此,使用 $rootScope 向其他控制器广播更改。
请帮我找出代码中的问题。
function serverController( server, $state, $rootScope, $timeout)
{
var vm = this;
vm.loader = false;
(function tick() {
server.setRootScope().then(
function(response){
angular.forEach(response.data, function (val) {
val['serverState'] = (val.status == 'running')?true:false;
$rootScope.servers[val.id] = val;
});
vm.servers = $rootScope.servers;
$rootScope.$broadcast('serverUpdated', [1,2,3]);
console.log('serverUpdated', [1,2,3]);
}
);
$timeout(tick, 25000);
})();
}
function serverManageController(server, $state, $rootScope, $stateParams)
{
var vm = this;
$rootScope.$on('serverUpdated', function(event, mass) {
console.log('serverUpdated');
console.log(mass);
});
}
像这样修改刻度函数。
function tick() {
server.setRootScope().then(
function(response){
angular.forEach(response.data, function (val) {
val['serverState'] = (val.status == 'running')?true:false;
$rootScope.servers[val.id] = val;
});
vm.servers = $rootScope.servers;
$rootScope.$broadcast('serverUpdated', [1,2,3]);
console.log('serverUpdated', [1,2,3]);
}
);
};
$timeout(function(){
$interval(tick, 25000);
},2000);
它应该会像您预期的那样工作。