如何使用AngularJS在单击时将文本元素更改为输入字段?

时间:2016-07-04 19:52:48

标签: javascript angularjs

我想知道如何在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中完成吗?

感谢您的帮助。

2 个答案:

答案 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>