【发布时间】:2014-02-28 17:04:15
【问题描述】:
我有这个问题:
在 ngRepeat 循环中,表单元素是隐藏的,只有在为每个元素单击编辑按钮时才会显示。
最后还有一个按钮,可以将元素添加到列表中,它应该只显示新添加的空元素的表单。
当第一次点击添加按钮时,所有的表格都会显示出来——这显然不是故意的——。但是,如果我显示表单元素然后隐藏它们(提交表单),当我单击添加按钮时,它不会显示所有表单,只显示新的表单 - 我真正想要的 -。
代码很简单:
<div ng-controller='TriggerCtrl' ng-model='triggers'>
<ul>
<li ng-repeat='trigger in triggers'>
<span ng-hide='edit'>{{trigger.operator}}</span>
<button ng-click='edit=!edit' ng-hide='edit'>Edit</button>
<form name='editTrigger' ng-show='edit' ng-submit='submit'>
<select ng-model='trigger.operator' ng-options='op.value as op.name for op in operators' />
<input id='submit' type='submit' value='Submit' ng-click='edit=!edit' />
</form>
</li>
</ul>
<button ng-click='add()'>Add</button>
</div>
还有 javascript:
function TriggerCtrl($scope) {
$scope.triggers = [
{operator: 'gt'},
{operator: 'gte'}
];
$scope.operators = [
{name: 'greater than', value: 'gt'},
{name: 'greater than equal', value: 'gte'}
];
$scope.add = function () {
$scope.triggers.push({});
$scope.edit = true;
};
};
可以在jsfiddlehttp://jsfiddle.net/gserra/NG76R/1/看到效果
要对其进行测试,首先单击添加按钮,然后查看所有表单均已显示。然后重新加载,然后首先单击编辑,然后单击提交。之后,如果你点击添加按钮,只会显示新的表单。
【问题讨论】:
标签: javascript html forms angularjs