我在试着发送广播节目。所以,这是我需要的文件:
html:
<ion-list>
<ion-item ng-repeat="item in items" ng-click="selectItem(item)" href="#/app/item/{{item.id}}">
{{item.name}}
</ion-item>
</ion-list>因此,当我单击控制器上的一个项selectItem(item)时:
controllers.js:
.controller('SelectItemCtrl', function($rootScope, $scope) {
$scope.items = // define my items list;
$scope.selectItem = function(selectedItem) {
console.log("Item was selected");
$rootScope.$broadcast('new-selected-item', {selectedItem});
console.log('Message sent');
}
})
.controller('DetailItemCtrl', function($rootScope, $scope) {
console.log('DetailItemCtrl started');
$scope.$on('new-selected-item', function(event, args) {
console.log(Message received);
console.log(args);
}
});当然,我的app.js将url链接到控制器:
app.js:
.state('app.item-detail', {
url: '/item/:itemId',
views: {
'menuContent': {
templateUrl: 'templates/detail.html',
controller: 'DetailItemCtrl'
}
}
})因此,当我选择一个项时,我的控制台日志是:
Message sent
DetailItemCtrl我不知道为什么我不能参加这个活动。
发布于 2016-06-13 01:03:40
当您的触发器ng-单击控制器不再是活动的,所以从它调用的任何操作( selectItem(item))都不会被触发。如果您需要一些东西来保持状态并在控制器之间进行通信,则应该使用服务。https://docs.angularjs.org/guide/services
https://stackoverflow.com/questions/37780257
复制相似问题