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

我的行數據現在只是服務器端的普通數據對象,所以在發送回服務器之前我不得不引入一些過濾,它似乎不是一個很好的方法......我確定必須有一種方法來訪問行範圍 –