Coo*_*oop 4 html javascript angularjs angularjs-ng-model
我现在使用Angular JS进行所有表单管理.为输入数据被存储到其相关联的ngModel,其可与在要处理$scope的controller.
所以我有这样的表单设置:
<form name="addJob" novalidate data-ng-submit="addJob.$valid && addJob(job)">
<input type="text" placeholder="Job Title" data-ng-model="job.title" required />
<textarea placeholder="Brief" data-ng-model="job.brief"></textarea>
<button type="submit" data-ng-disabled="addJob.$invalid">Add Job</button>
</form>
Run Code Online (Sandbox Code Playgroud)
这在所有主流浏览器中都能正常工作(除了我没有测试过IE).您会注意到我没有在输入或textarea上包含名称属性.我出于任何原因需要它们吗?我以前读过以下内容:
Note: Only form elements with a name attribute will have their values passed when submitting a form.
Run Code Online (Sandbox Code Playgroud)
但我的数据传递得非常好,因为它与...有关ngModel.是正确的方法 - 包括或不包括名称属性?
您需要name 元素的属性以及ng-model,以便将实例添加到formController,并在控件或表单上进行任何验证.此外,如果您要提交表单(表单上的操作),则只有具有name属性的表单元素将提交给服务器.请参阅本机表单验证和提交过程.
在ngModelController实例中,有一个名为的属性$name,它只是元素的名称.
this.$name = $attr.name;
Run Code Online (Sandbox Code Playgroud)
并且ng-model指令$addControl在其父窗体控制器实例(如果存在)上调用方法,它将实例添加为nameformController实例上的键的值,如果您没有名称,则它不会被关联,并且没有角度验证可以发生.
form.$addControl = function(control) {
// Breaking change - before, inputs whose name was "hasOwnProperty" were quietly ignored
// and not added to the scope. Now we throw an error.
assertNotHasOwnProperty(control.$name, 'input');
controls.push(control);
if (control.$name) {
form[control.$name] = control;
}
Run Code Online (Sandbox Code Playgroud)
因此,在您的情况下,name如果您不依赖于角度形式控制器验证或不提交带有操作的表单,则不需要.
| 归档时间: |
|
| 查看次数: |
825 次 |
| 最近记录: |