簡體   English   中英

$ rootScope。$ broadcast問題

[英]$rootScope.$broadcast Issue

我正在嘗試發送廣播事件。 因此,這是我需要的文件:

的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將網址鏈接到控制器:

app.js:

.state('app.item-detail', {
  url: '/item/:itemId',
  views: {
    'menuContent': {
      templateUrl: 'templates/detail.html',
      controller: 'DetailItemCtrl'
    }
  }
})

因此,當我選擇一個項目時,我的控制台日志是:

Message sent
DetailItemCtrl

我不知道為什么我不能參加這個活動。

觸發ng-click時,控制器不再處於活動狀態,因此不會觸發從它調用的任何操作(selectItem(item))。 如果您需要某種東西來保持狀態並在控制器之間進行通信,則應該使用服務。 https://docs.angularjs.org/guide/services

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM