2014-09-22 5 views
0

Вот plunker LinkКак связаться с контроллерами?

http://plnkr.co/edit/X0fhStczchvxkHMUH9iq?p=preview

var app = angular.module('app', []); 
app.Controller('firstCtrl', function ($scope, $rootScope){ 
$scope.handleClick = function(txt){ 
$rootScope.$broadcast('someEvent',txt) 
} 
}); 

app.Controller('secondCtrl', function ($scope, $rootScope){ 
$scope.$on('someEvent', function(event, mass) { 
    $scope.msg =mass 
}); 
}); 
+1

Это '' controller' не Controller'. Проверьте консоль. Также ваша демонстрация не соответствует тому, что вы показываете. В вашей демонстрации событие транслируется при создании экземпляра контроллера и к тому времени второй контроллер еще не был создан для прослушивания события. Вероятно, нет смысла устанавливать массив как ngModel для ввода. http://plnkr.co/edit/isCspC?p=preview – PSL

ответ

0

@PSL правильно. Я добавил трансляцию на кнопку, чтобы показать, что она работает. Обратите внимание, что массив отображается во вводе как строка «1, 2, 3».

<div ng-controller="firstCtrl"><button ng-click="broadcastMass()">Broadcast</button></div> 

Контроллер:

var app = angular.module('app', []); 
app.controller('firstCtrl', function firstCtrl($scope, $rootScope){ 
    $scope.broadcastClick = function() { 
     $rootScope.$broadcast('someEvent', [1,2,3]); 
    }; 
}); 
app.controller('secondCtrl',function secondCtrl($rootScope){ 
    $rootScope.$on('someEvent', function(event, mass) { 
     $rootScope.msg = mass; 
    }); 
}); 

link to plunker

Смежные вопросы