0

ページネーションと検索機能を備えたスマート テーブルを設定しました。すべてのアクティブな行の列の合計を表示したいと考えています。これは、デフォルトではデータ セット全体を意味し、検索がアクティブな場合はフィルタリングされたデータ セットを意味します。スマート テーブルのドキュメントにはあまり説明がないので、グリッド データ変数にウォッチを設定してみました。ただし、これは現在のページの行のみを合計し、他のページは無視します。smart-table が現在のフィルター処理されたデータ セットを保持している場所と、検索イベントを監視するためのより良い方法があるかどうかを教えてもらえますか? ありがとう。

    $scope.$watch('gridData', function() {
        $scope.totalSum = 0;

        angular.forEach($scope.gridData, function(row) {
            $scope.totalSum += row.numericColumn;
        });
    });
4

1 に答える 1

2

これは最近実装されたもので、表示目的またはロジック目的 (csv エクスポートなど) でフィルタリングされたコレクションに、メイン コントローラー メソッドを介してアクセスできますgetFilteredCollection。検索に一致するレコードの数を表示するディレクティブの例

.directive('stSummary', function () {
    return {
      restrict: 'E',
      require: '^stTable',
      template: '<div>records:{{size}}</div>',
      scope: {},
      link: function (scope, element, attr, ctrl) {
        scope.$watch(ctrl.getFilteredCollection, function  (val) {
        scope.size = (val || []).length;
      })
     }
    }
})
于 2015-03-16T13:23:57.503 に答える