如何为ng-repeat渲染的嵌套数组列表项绑定单行实例关闭操作
解决方案
你当前代码的问题在于:按钮上写的ng-click="close(d)"里的d是内层<td ng-repeat="d in datas">的局部变量,在按钮所在的独立<td>作用域内无法获取到有效值,调整传参逻辑即可实现需求,以下是两种常用实现方式:
方式1:直接传递实例ID(推荐)
你返回的嵌套数组中,每个子数组的第一个元素就是实例唯一ID,直接把外层循环的datas数组的第一个元素传给close方法即可:
<tbody> <tr ng-repeat="datas in data" > <td ng-repeat="d in datas"> {{d}} </td> <td> <button class="btn btn-primary" ng-click="close(datas[0])">Close</button> </td> </tr> </tbody>
对应JS逻辑示例:
$scope.close = function(instanceId) { // 直接用拿到的instanceId调用实例关闭接口即可 }
方式2:传递行索引同步渲染
如果关闭成功后需要删除页面上的对应行,可以同时传递外层循环的行索引$index:
模板修改:
<button class="btn btn-primary" ng-click="close(datas[0], $index)">Close</button>
对应JS逻辑示例:
$scope.close = function(instanceId, index) { // 调用关闭接口成功后,删除原数组对应下标的元素,页面会自动同步渲染 $scope.data.splice(index, 1); }
内容的提问来源于stack exchange,提问作者Amara
相关产品推荐
相关产品推荐

