我希望功能按钮点击$来自服务器的广播数据,然后调用$ state.go('new-route')。在这个新状态的控制器中,我想要检索该数据。但是当我尝试用$ on来获取数据时,它是未定义的,事件不是在监听......下面你可以找到我的代码。
MainController
'use strict';
angular.module('app').controller('MainController', ['$scope', '$state',
function ($scope, $state) {
$scope.takeData = null;
//Here i am getting data from server
$scope.takeData = dataFromServer;
$scope.buttonClick = function () {
$scope.$broadcast('send-data', $scope.takeData);
$state.go('newstate');
};
}
]);
查看主控制器
<div ng-controller="MainController">
<div class="col-md-12">
<div class="btn-group">
<button class="btn btn-default" ng-click="buttonClick ()"><i
class="fa fa-edit"></i> {{Click Button}}
</button>
</div>
</div>
</div>
新控制器
'use strict';
angular.module('app').controller('MainController', ['$scope', '$state',
function ($scope, $state) {
$scope.$on('send-data', functiopn(e, data){
$scope.getData = data;
});
$scope.useData = function(){
// Here i want to use retrieved data
console.log($scope.getData);
//this returns undefined
}
}
]);
答案 0 :(得分:0)
$scope.$broadcast
只有在你的“新控制器”是“MainController”的子节点时才有效,是这样的吗?
如果没有,您可以重新安排控制器,以便“MainController”是“新控制器”的父控制器
或
如果要将它们保留为兄弟控制器,则将$rootScope
注入每个控制器,然后使用$rootScope.$broadcast
和$rootScope.$on
来监听事件。我相信$rootScope.$broadcast
适用于兄弟控制器。