0

同じ html に 2 つの ui グリッドを作成しました (どちらも同じです)。送信ボタンをクリックして選択した行を取得しようとしています。2 番目のグリッドで選択した行を取得できますが、最初のグリッドでは取得できません。

私はこのように選択された行を取得しています:

 onRegisterApi: function(gridApi) {
    $scope.gridApi = gridApi;
    $scope.mySelectedRows = $scope.gridApi.selection.getSelectedRows();
    }

プランカー: http://plnkr.co/edit/SgYh9QzjCQDOKMMXATlF?p=info

両方のグリッドの選択された行を取得する方法はありますか?

前もって感謝します。

4

1 に答える 1

1

これは、グリッドが DOM に読み込まれるときに API が登録されるためです。同じスコープを持つ 2 つのグリッドがあるため、2 番目が読み込まれると、その API は $scope.gridApi で定義されたものになります。したがって、その API で行うことはすべて、2 番目のグリッド インスタンスと対話します。

ここでの解決策は、おそらく $scope.gridOptions1、$scope.gridOptions2 などのグリッドを分離することです。両方で発生する必要がある場合は、関数内で各 API を個別に呼び出すことができます。

これは私がすることです: http://plnkr.co/edit/nLLR63L4H4NqLoZsGpkS?p=preview

送信関数については、結果を含む単一の配列が必要であると仮定して、1 つの結果を提供するように関数を更新しました。

  $scope.submitData = function() {

    var selectedRows1 = $scope.gridApi1.selection.getSelectedRows(),
        selectedRows2 = $scope.gridApi2.selection.getSelectedRows(),
        selectedRows = selectedRows1.concat(selectedRows2);

    console.warn(selectedRows);
    alert(selectedRows.length)
    if (selectedRows.length === 0)
      alert('Please select an item from grid');
    else
      alert(JSON.stringify(selectedRows));

  }
于 2016-06-08T15:17:41.150 に答える