0

Angular で行を強調表示しようとしています。これが私のhtmlです:

<tr  ng-class="{selected: $index==selectedIndex}" ng-repeat="encounter in encounters | filter:search" data-id="{{encounter.id}}" ng-click="getSelectedRow($index)">

行のディレクティブは次のとおりです。クリックハンドラがありますgetSelectedRow()

angular.module('app').directive('encounterItemTable', function ($rootScope) {
  return {
    restrict: 'A',
    replace: true,
    templateUrl: 'views/encounter.item.table.html',
    scope: {
      encounters : '='
    },

    link: function(scope) {
      scope.getSelectedRow = function(index) {
        $rootScope.$broadcast('selectedRow', { rowIndex: index });
      };
    }
  };
});

これは、行を強調表示するためにコントローラーにブロードキャストされます。コントローラーが魔法を行う場所は次のとおりです。

  $scope.$on('selectedRow', function(event, data) {
    $scope.selectedIndex = data.rowIndex;
    $scope.selectedEncounter = $scope.encounters[data.rowIndex];
  });

コントローラーのコードはヒットしますが、行が強調表示されることはありません。私は何が欠けていますか?

4

2 に答える 2

2

ng-class="{selected: $index==$parent.selectedIndex}"

$parent がキーです。それ以外の場合は、スコープではなく、行の選択されたインデックスを指しています

于 2013-10-29T02:06:38.483 に答える