テーブルの行がクリックされたときにイベントをブロードキャストするディレクティブがあります。ディレクティブは次のとおりです。
angular.module('app').directive('encounterItemTable', function () {
return {
restrict: 'A',
replace: true,
templateUrl: 'views/encounter.item.table.html',
scope: {
encounters : '='
},
link: function(scope) {
scope.getSelectedRow = function(index) {
scope.$broadcast('selectedRow', { rowIndex: index });
};
}
};
});
を呼び出すマークアップは次のとおりです。getSelectedRow
<tr ng-class="{selected: $index==selectedIndex}" ng-repeat="encounter in encounters | filter:search" data-id="{{encounter.id}}" ng-click="getSelectedRow($index)">
行getSelectedRow()
がクリックされると、関数が呼び出されます。インデックスは正しいです。一方、コントローラーには何も聞こえません。これがコントローラーのコードです。
$scope.$on('selectedRow', function(event, data) {
$scope.selectedIndex = data.rowIndex;
$scope.selectedEncounter = $scope.encounters[data.rowIndex];
});
コントローラーがイベントを認識しないのはなぜですか? 私は何が欠けていますか?