我想知道如何在AngularJS中完成这项工作。
有这个关键字列表和旁边的编辑按钮。
System.Data.Entity
现在我的控制器中有这样的东西。
<tr ng-repeat="keyword in keywords">
<td>
<strong id="keyword.name">{{ keyword.name }}</strong>
</td>
<td>
<button ng-click="editKeyword(keyword.name)">Edit</button>
<button ng-click="deleteKeyword(keyword.name)">Delete</button>
</td>
</tr>
如何通过控制器用文本输入字段替换“strong”元素。这可以在angularJS中完成吗?
感谢您的帮助。
答案 0 :(得分:9)
正如查理所提到的那样,ng-if
可以胜任这项工作。
还有&#ng; ng-switch&#39;,它完全是针对这种情况制作的。
<tr ng-repeat="keyword in keywords">
<td ng-switch="mode[$index]">
<input ng-switch-when="edit" id="edit" ng-model="keyword.name">
<strong ng-switch-default id="keyword.name">{{ keyword.name }}</strong>
</td>
<td>
<button ng-click="editKeyword(keyword.name, $index)">Edit</button>
<button ng-click="deleteKeyword(keyword.name)">Delete</button>
</td>
</tr>
控制器看起来像:
$scope.editKeyword = function(name, index){
$scope.mode[index] = "edit";
console.log(name);
//something done to change the <strong> element into a text input
};
当您完成编辑后,您将$ scope.mode [index]更改为其他任何内容。
答案 1 :(得分:7)
最简单的方法是使用ng-if
<td>
<strong id="keyword.name" ng-if="!editMode">{{ keyword.name }}</strong>
<span ng-if="editMode">
<input ng-model="keyword.name">
<button ng-click="save(keyword); editMode = false">Save</button>
<span>
</td>
<td>
<button ng-click="editKeyword(keyword); editMode = true">Edit</button>
<button ng-click="deleteKeyword(keyword)">Delete</button>
</td>