角广播不起作用

时间:2015-11-23 07:30:24

标签: angularjs broadcast angularjs-rootscope

我无法向其他控制器广播,因为我没有父子关系,因此使用$ 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);
    });
}

1 个答案:

答案 0 :(得分:1)

像这样修改刻度函数。

 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);

它应该按预期工作。