访问 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 美元等,但这不是很优雅。

您可以使用

$index跟踪项目。您还可以使用索引来决定显示/隐藏项目。您可以通过实现具有显示/隐藏逻辑的函数并传入索引来做到这一点。例如:

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

看看这个。

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

<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;
}

最新更新