37

测试 Angular ui-grid (ng-grid v.3.0)。无法为我的生活找到选定的行。我只想在用户单击它时获取行甚至行 ID。在这里找到了最高评论,但我认为这已经过时了: 从 ng-grid 获取选择行?

有谁知道gridOptions.selectedItems3.0 存储在哪里?

4

4 回答 4

36

这是你要找的吗? http://ui-grid.info/docs/#/tutorial/210_selection

  1. 使用 ui-grid-selection 标签激活网格选择功能(以及在您的应用中注册 ui.grid.selection 模块)
  2. 注册 gridApi 并使用 gridApi.selection 访问 getSelectedRows()
于 2014-10-04T01:33:37.520 回答
24

除了上述步骤https://stackoverflow.com/a/26188783/2658127之外,您可能还必须通过 ng-click 事件调用它以获取实际值/对象。至少我是这样工作的。

Eg:
$scope.selectRow = function(){
    $scope.gridApi.selection.getSelectedRows();
};

并从模板中调用 selectRow()。

考虑到 ui-grid 没有最好的文档(特别是对于这个选择部分),这适用于像我一样困惑的任何人。

于 2015-04-01T18:33:32.843 回答
16

最简单的方法是:

  1. 通过添加这个你的控制器来注册 gridApi:

    $scope.gridOptions.onRegisterApi = function(gridApi) { $scope.myGridApi = gridApi; };

  2. 访问所选项目的数组:

    $scope.myGridApi.selection.getSelectedRows();

于 2015-08-31T16:34:14.093 回答
0

使用网格 ui,您必须使用selection.on.rowSelectionChanged更新存储所选项目的范围变量。通过这种方式,您可以在绑定表达式中使用该值。

var SelectController = function($scope) {
    ...
    $scope.selectedItem = null;

    $scope.gridOptions = {
            data : 'articles',
            enableRowSelection : true,
            multiSelect : false,
            enableRowHeaderSelection : false,
            ...
        };

        $scope.gridOptions.onRegisterApi = function(gridApi) {
            // set gridApi on scope
            this.$scope.gridApi = gridApi;
        }.bind(this);
        $scope.gridOptions.onRegisterApi = function(gridApi) {
            // set gridApi on scope
            this.$scope.gridApi = gridApi;
            this.$scope.gridApi.selection.on.rowSelectionChanged($scope,
                    function(row) {
                        this.$scope.selectedItem = row.entity;
                    }.bind(this));
        }.bind(this);

如果需要多选,请使用数组而不是普通对象。

于 2015-05-22T08:43:36.967 回答