AngularJS Smart Table で行選択時にイベントをトリガーする方法はありますか?
これは他のスレッドの主題でしたが、この点に対する回答はまだありません。
AngularJS Smart Table で行選択時にイベントをトリガーする方法はありますか?
これは他のスレッドの主題でしたが、この点に対する回答はまだありません。
少なくとも 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 内のコールバック関数
これは、スマート テーブルに簡単に配置できる時計です。
// 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 の問題は役に立ちました。