1

我有一个表,使用各自的范围变量条件呈现行:访问NG-repeat的项目范围

<tr ng-repeat="row in data"> 
    <input type="text" data-ng-show="editMode" data-ng-model="row.smth"/> 

所以当变量editMode行范围设置为true输入时才显示,它工作得很好。

现在,我想动态添加另一行:

$scope.data.push(my_new_row) 

这太伟大工程。但是接下来我想将这个新行的范围变量editMode设置为某种东西,并且我没有想法。

我知道有一个无证的方式来使用$$ childHead等,但这不是很优雅。

回答

2

您可以跟踪使用$索引项。您也可以使用索引决定显示/隐藏项目。您可以通过使用show/hide逻辑实现一个函数并传递索引来完成此操作。例如:

<div ng-repeat="row in data track by $index"> 
    <input type="text" data-ng-show="GetEditMode($index)" ng-model="row.smth[$index]"> 
</div> 

看看this

+1

实际上我有独特的ID作为我的行的一部分,所以'无需跟踪',只需将editMode转换为函数即可,感谢您的提示! –

1

您可以在行数据中设置编辑模式。

<input type="text" data-ng-show="row.editMode" data-ng-model="row.smth"/> 

你可以试试这个:

<input type="text" data-ng-show="this.editMode" ng-change="toggle(this);" data-ng-model="row.smth"/> 

在控制器,你可以访问编辑模式为:

$scope.toggle = function(context){ 
     console.log(a); 
     context.editMode=!context.editMode; 
} 
+0

我的行数据现在只是服务器端的普通数据对象,所以在发送回服务器之前我不得不引入一些过滤,它似乎不是一个很好的方法......我确定必须有一种方法来访问行范围 –