5

AngularJS Smart Table で行選択時にイベントをトリガーする方法はありますか?

これは他のスレッドの主題でしたが、この点に対する回答はまだありません。

Angular JS で SmartTable を使用してグリッド アイテムを選択できない

4

2 に答える 2

4

少なくとも 1 行が選択されるたびにパネルを表示するには、この機能が必要でした。最初は時計をセットアップしましたが、高すぎると判断しました。

stSelectRow ディレクティブ内にコールバックを追加することになりました。

ng.module('smart-table')
  .directive('stSelectRow', function () {
    return {
      restrict: 'A',
      require: '^stTable',
      scope: {
          row: '=stSelectRow',
          callback: '&stSelected' // ADDED THIS
      },
      link: function (scope, element, attr, ctrl) {
        var mode = attr.stSelectMode || 'single';
        element.bind('click', function ($event) {
          scope.$apply(function () {
              ctrl.select(scope.row, mode, $event.shiftKey);
              scope.callback(); // AND THIS
          });
        });

        //***///
      }
    };
  });

その後、コントローラーからディレクティブに関数を渡すことができました (注: 選択した行を戻すことができましたが、その必要はありませんでした)。

tr ng-repeat="row in customerResultsTable" st-select-row="row" st-select-mode="multiple" st-selected="rowSelected()">

ヘルプについては、この投稿を参照しました 別の attr で定義されたディレクティブ attr 内のコールバック関数

于 2015-02-18T15:12:03.323 に答える
0

これは、スマート テーブルに簡単に配置できる時計です。

// fired when table rows are selected
$scope.$watch('displayedCollection', function(row) {

  if(!row) return;

  // get selected row
  row.filter(function(r) {
     if (r.isSelected) {
       console.log(r);
     }
  })
}, true);

関連するhtml:

<table st-table="displayedCollection" st-safe-src="rowCollection" class="select-table table">

この github の問題は役に立ちました。

于 2015-03-05T19:58:17.477 に答える