单击以使用angular指令替换DOM元素

时间:2014-03-31 23:15:23

标签: javascript jquery angularjs

所以我想知道是否有可能在某个范围内有一个ng-click语句,当点击它时会用指令替换spans内容(用它的模板,绑定等)?

实施例

 <div class="col-xs-12">
    <span ng-click="edit"> {{ user.name }} - {{ user.lastWin }} </span>
        <button ng-click="removeUser(user.name)" class="btn btn-danger pull-right margin-right-10">Remove User</button>
  </div>

编辑将是这样的:

<form name="editUser">
  <input type="text" name="name" ng-model="name" placeholder="Name"/>
  <input type="text" ng-model="lastWin" placeholder="Last Win"/>
</form>
<button ng-click="editUser($index, { name: name, lastWin: lastWin })" class="btn">Save</button>

我需要在我的控制器上做些什么来让它正确交换所有内容?

2 个答案:

答案 0 :(得分:2)

我会使用ng-if并完成所有操作而无需额外的javascript

类似的东西:

<div class="col-xs-12" ng-if="!edit">
    <span ng-click="edit = true"> {{ user.name }} - {{ user.lastWin }} </span>
    <button ng-click="removeUser(user.name)" class="btn btn-danger pull-right margin-right-10">Remove User</button>
</div>
<div ng-if="edit">
    <form name="editUser">
      <input type="text" name="name" ng-model="name" placeholder="Name"/>
      <input type="text" ng-model="lastWin" placeholder="Last Win"/>
    </form>
    <button ng-click="editUser($index, { name: name, lastWin: lastWin })" class="btn">Save</button>
</div>

答案 1 :(得分:0)

在视图中使用ng-if逻辑很好。 如果你想摆脱ng-if在html中声明两个模板

<script type='text/ng-template' id='view'>
<!--Read only content here-->
<script>

<script type='text/ng-template' id='edit'>
<!--Form content here-->
<script>

然后使用ng-include

<div ng-include='template'></div>

在您的控制器中,您可以根据ng-click

中的当前状态设置activeTemplate
if(edit) {
   $scope.template='edit';
}
else {
   $scope.template='view';
}