【问题标题】:How to get the cell value from ng-grid如何从 ng-grid 获取单元格值
【发布时间】:2015-06-17 16:38:00
【问题描述】:

我是 AngularJS 的初学者。我研究了ng-grid的demo,有个问题。

index.html

<!DOCTYPE html>
<html ng-app="myApp">

<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<link rel="stylesheet" type="text/css" href="http://angular-ui.github.com/ng-grid/css/ng-grid.css" />
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js"></script>
<script type="text/javascript" src="http://angular-ui.github.com/ng-grid/lib/ng-grid.debug.js"></script>
<script src="app.js"></script>
</head>

<body ng-controller="MyCtrl">
    <div class="gridStyle" ng-grid="gridOptions"></div>
    <div class="selectedItems">{{mySelections}}</div><br><br>

</body>

</html>

app.js

var app = angular.module('myApp', ['ngGrid']);
app.controller('MyCtrl', function($scope) {
$scope.mySelections = [];
$scope.myData = [{name: "Moroni", id: 1},
                 {name: "Tiancum", id: 2},
                 {name: "Jacob", id: 3},
                 {name: "Nephi", id: 4},
                 {name: "Akon", id: 5},
                 {name: "Enos", id: 6}];
$scope.gridOptions = { 
data: 'myData',
selectedItems: $scope.mySelections,
multiSelect: true 
};

//$scope.mySelections_id = $scope.mySelections.length;

});

当我选择第一行时, selectedItems 的 div 将显示 [{"name":"Moroni","id":1}]。结果没问题。如果我只想从选定的行中获取单元格 [id] 的值,我该如何修改我的代码?

这里是Plunker

【问题讨论】:

    标签: angularjs ng-grid


    【解决方案1】:

    使用 afterSelectionChange 回调将 id 从选择中提取到另一个数组。

    $scope.gridOptions = { 
        data: 'myData',
        selectedItems: $scope.mySelections,
        multiSelect: true,
        afterSelectionChange: function () {
          $scope.selectedIDs = [];
          angular.forEach($scope.mySelections, function ( item ) {
            $scope.selectedIDs.push( item.id )
          });
        }
      };
    

    现在您可以从模板中引用{{selectedIDs}} 并在其中包含所有选定的ID。或者只是第一个:{{selectedIDs[0]}}

    在此处查看工作示例:http://plnkr.co/edit/xVwVWX

    【讨论】:

    • 嗨奥利弗。您的代码运行良好。但是如果我们设置 multiSelect: false 让用户只能点击一行,如何获取选中的行呢?是否有任何属性,如 selectedRow 或 selectedItem instaed of selectedItems?因为如果我们为 multiSelect:false 使用 selectedItems,我们选择的行将被添加到 $scope.mySelections 数组中,如果我们想访问该项目,我们必须编写 $scope.mySelections[0].name.. 如何解决它?
    • 我没有更简单的解决方案。对不起。
    【解决方案2】:

    您可以使用 afterSelectionChange 事件的参数访问所选行的 rowItem。实体属性将具有 id 和 name 属性。

     $scope.gridOptions = { 
        data: 'myData',
        selectedItems: $scope.mySelections,
        multiSelect: true,
        afterSelectionChange: function (theRow, evt) {      
           alert(theRow.entity.id);
    }
    

    };

    【讨论】:

      【解决方案3】:

      实际上,我想获取一个单元格值并在用户选择表格中的单元格时进行修改。

      以上答案使用固定列的字段.. 像

       $scope.selectedIDs.push( item.id ) // id is column filed
      

      我找到了另一种方法,而不是这些答案,而这正是我想要实现的目标。

      示例代码: http://plnkr.co/edit/wfiMhlJ7by4eUHojjKT4?p=preview

      editableCellTemplatecolumnDefs 的一个选项,用于解决这个问题。

      Angular 是阿斯沃姆!!

      【讨论】:

        猜你喜欢
        • 2022-12-03
        • 2016-06-05
        • 1970-01-01
        • 2021-06-28
        • 2018-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多