【问题标题】:Angular form with dynamic name are not initializing具有动态名称的角度表单未初始化
【发布时间】:2015-01-21 05:46:00
【问题描述】:
我有一些对象和一个表格。每个对象都应该记住它的表单状态(主要是脏度)。
我正在尝试使用这样的动态名称创建一个表单:
<form name="selectedObject.form">
<input type="text" name="name" ng-model="selectedObject.name" required>
</form>
我的问题是:
- 我把第一个表单弄脏了
- 更改所选对象
- 表单被认为是脏的
我认为对表单使用动态名称会设置一个手表并让它动态重新呈现。
无论如何要这样做?
这是一个模拟问题的 plunkr:
http://plnkr.co/edit/NAHVfhCf6RhpJHPGl7El?p=preview
【问题讨论】:
标签:
angularjs
forms
dynamic
【解决方案1】:
因为你想让它工作,我不认为。我还在您的代码中看到了问题,即表单声明。名称是字符串,所以现在您的表单名称始终是文字 selectedObject.form。我认为您应该将其写为 <form name="{{ selectedObject.form }}"> 并为表单使用实际名称而不是您现在分配的 {}?
您可以将isDirty 作为新属性添加到您的objects 并手动切换它。
$scope.objects = [{
name: 'Object1',
type: 'Type1',
form: 'form1',
isDirty: false
},{
name: '',
type: 'Type2',
form: 'form2',
isDirty: false }];
<body ng-controller="MainCtrl">
<button ng-click="setSelected()">Change selected</button>
<form name="{{ selectedObject.form }}">
<input type="text"
ng-model="selectedObject.name"
ng-change="selectedObject.isDirty = true">
{{ selectedObject.isDirty }}
</form>
</body>