首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$rootScope.$broadcast问题

$rootScope.$broadcast问题
EN

Stack Overflow用户
提问于 2016-06-12 23:55:52
回答 1查看 83关注 0票数 0

我在试着发送广播节目。所以,这是我需要的文件:

html:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
.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:

代码语言:javascript
复制
.state('app.item-detail', {
  url: '/item/:itemId',
  views: {
    'menuContent': {
      templateUrl: 'templates/detail.html',
      controller: 'DetailItemCtrl'
    }
  }
})

因此,当我选择一个项时,我的控制台日志是:

代码语言:javascript
复制
Message sent
DetailItemCtrl

我不知道为什么我不能参加这个活动。

EN

回答 1

Stack Overflow用户

发布于 2016-06-13 01:03:40

当您的触发器ng-单击控制器不再是活动的,所以从它调用的任何操作( selectItem(item))都不会被触发。如果您需要一些东西来保持状态并在控制器之间进行通信,则应该使用服务。https://docs.angularjs.org/guide/services

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37780257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档