如何在AngularJS light-grid(v0.3.1)中获取行索引?
获取light-grid 0.3.1的行索引解决方案
针对你使用的light-grid 0.3.1版本,有两种可靠的方式获取行索引,具体如下:
1. 使用Angular内置的$index变量(最直接)
light-grid 0.3.1基于AngularJS构建,<lg-row-start>指令本质上运行在Angular的ng-repeat上下文里,所以你可以直接用Angular内置的$index变量获取当前行的索引(从0开始计数)。
修改你的代码如下:
<tr lg-row-start> <td> <lg-view> <!-- 显示当前页内的行索引 --> 行索引:{{ $index }}<br /> {{ row.data.id }}<br /> <input ng-click="selectRow(row.data, $index)" name="lg-grid-select-row[]" value="{{row.data.id}}" id="lg-grid-select-row{{row.data.id}}" class="lg-grid-select-row" type="checkbox" /> </lg-view> </td> </tr>
这个方法不需要额外配置,直接就能拿到当前页内的行序号。
2. 获取全局数据集的行索引(如果开启分页)
如果你的grid开启了分页,$index只会返回当前页内的行序号(比如第二页的第一行$index是0)。如果你需要整个数据集里的全局索引,可以通过分页参数计算得到:
<tr lg-row-start> <td> <lg-view> <!-- 全局行索引:当前页起始位置 + 当前页内索引 --> 全局索引:{{ (gridOptions.pagination.currentPage - 1) * gridOptions.pagination.pageSize + $index }}<br /> {{ row.data.id }}<br /> <input ng-click="selectRow(row.data, (gridOptions.pagination.currentPage - 1) * gridOptions.pagination.pageSize + $index)" name="lg-grid-select-row[]" value="{{row.data.id}}" id="lg-grid-select-row{{row.data.id}}" class="lg-grid-select-row" type="checkbox" /> </lg-view> </td> </tr>
注意:这里假设你的
gridOptions.pagination.currentPage是从1开始计数的,如果分页配置里currentPage从0开始,去掉公式里的-1即可。
关于你代码里的row.index
你原代码里尝试使用row.index,但在light-grid 0.3.1版本中,默认情况下row对象并没有暴露index属性,而是需要通过Angular的$index来获取。如果一定要从row对象上获取,你可以在grid的rowTemplate或者自定义指令里手动给row对象添加index属性,但这会增加额外代码,不如直接用$index高效。
内容的提问来源于stack exchange,提问作者Roham Tehrani
相关产品推荐
相关产品推荐

