2014-09-22 119 views
0

這裏是plunker鏈接如何在控制器之間進行通信?

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 2014-09-22 18:27:20

回答

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

相關問題