2

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

1 回答 1

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

它应该可以按您的预期工作。

于 2015-11-23T07:34:09.343 回答