![](/img/trans.png)
[英]How can I send array from controller angularjs to codeigniter controller?
[英]How can I send a message from one controller to another in AngularJS?
我有以下設置:
stApp.controller('AdminTableController', ['$rootScope', '$scope', 'gridService',
function ($rootScope, $scope, gridService) {
$scope.$watch('tableData.$pristine', function (newValue) {
$rootScope.broadcast("tableDataUpdated", {
state: page.$pristine
});
});
}])
stApp.controller('AdminGridController', ['$rootScope', '$scope', 'gridService',
function ($rootScope, $scope, gridService) {
$rootScope.on("tableDataUpdated", function (args) {
//args.state would have the state.
alert(args.state);
});
}])
當我運行此代碼時,我收到一條消息:
Object #<Object> has no method 'on'
請注意,我嘗試使用$ rootScope.on和$ scope.on
你必須意味着$broadcast
和$on
(而不是broadcast
和on
),即:
$rootScope.$broadcast("tableDataUpdated", { state: page.$pristine });
// ...
$rootScope.$on("tableDataUpdated", function (args) {
// ...
值得注意的是, $broadcast
用於將事件委托給子節點或兄弟節點范圍,而$emit
會將事件向上傳遞給范圍的父節點,因此;
當選擇$broadcast
(而不是$emit
),你要么注入根范圍為搭售$on
(為你做了很好),或致電$on
接收器上的隔離范圍,無論是調度員的一個子范圍。
如果事件監聽器在子范圍內 : $scope.$broadcast('MyEvent', args);
如果事件監聽器位於父作用域中 : $scope.$emit('MyEvent', args);
你可以通過在$ rootScope上使用$ broadcast來避免任何混淆,因為$ rootScope是Angular應用程序中所有作用域的父級: $rootScope.$broadcast('MyEvent', args);
無論你使用$ emit還是$ broadcast,接收控制器都會監聽$scope.$on('MyEvent', function() {});
$rootScope.on("tableDataUpdated", function (args) {
//args.state would have the state.
alert(args.state);
});
應該
$rootScope.$on("tableDataUpdated", function (args) {
//args.state would have the state.
alert(args.state);
});
$scope.$emit('MyEvent', args);
從第一個控制器,並在第二個控制器接收:
$scope.$on('MyEvent', function() {});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.