使用角度时表单元素是否需要名称属性
Is name attribute required on form elements when using Angular?
我现在使用Angular JS进行所有表单管理。输入的数据被存储到它们的关联ngModel
,可以在controller
的$scope
中处理。
所以我有这样的表单设置:
<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>
这在所有主要浏览器中都绝对有效(除了我没有测试过IE)。您会注意到我没有在输入或文本区域包含名称属性。我出于任何原因需要它们吗?我以前读过以下内容:
Note: Only form elements with a name attribute will have their values passed when submitting a form.
但是我的数据传递绝对正常,因为它绑定到ngModel
。是正确的方法 - 包含或不包含名称属性?
元素上的name
属性以及 ng-model,以便将实例添加到 formController 中,并在控件或窗体上进行任何验证。此外,如果您要提交表单(对表单的操作),则只有具有name
属性的表单元素将提交到服务器。请参阅本机表单验证和提交过程。
在 ngModelController 实例中,有一个名为 $name
的属性,它只不过是元素的名称。
ng模型控制器源
this.$name = $attr.name;
ng-model 指令在其父 formController 实例(如果存在)上调用$addControl
方法,该方法将实例添加为键的值,并在 formController 实例上具有name
,如果您没有名称,则它不会被关联,并且不会发生角度验证。
表单控制器源
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;
}
因此,在您的情况下,如果您不依赖角度表单控制器验证或未提交带有操作的表单,则无需name
。
您描述的功能不需要名称属性,因为正如您所说,ng-model 已经将数据绑定到控制器。 但是,如果要包含表单的验证,则必须使用 name 属性来链接 UI 中彼此相关的元素。 以下是输入的angularjs api文档的链接:https://docs.angularjs.org/api/ng/directive/input。在底部,您将看到我所指的验证。
简单地回答您的问题:不,名称属性不是必需的。在 Angular 中输入所需的唯一属性是 ng-Model,以便将数据链接到控制器。
- 检查对象的所有属性是否未定义
- 检查来自不同数组的两个元素的一个属性是否相等
- 正在检查属性的属性是否存在
- 在 Forerunner 数据库集合中创建主键时,key 属性是否可以位于集合对象的对象内部
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- Ember 1.0 预发行版支持属性是否已更改
- VueJS:检查属性是否具有来自其他属性的值
- 创建nonce并将其输出为数据属性是否存在漏洞
- 检查数组中的对象属性是否与具有相同ID的另一个对象重复
- 如何在Ember.js中创建一个计算属性来查看单个EmberData属性是否脏
- Javascript-在检查对象属性是否存在时避免异步竞争条件
- 如何指定输入元素中允许的最大字符数 - 设置 maxlength 属性是否足够
- 如何检查主干模型中的嵌套属性是否已更改
- HTML 文本框值属性是否安全免受 XSS 攻击
- 在 HTML 定位点中指定“语言”属性是否会更改事件行为
- 在灯泡阶段检查对象属性是否存在
- 给定元素本身的 aria-live 属性是否可以使用 javascript 动态设置
- 立即调用的属性是否可以引用它所分配到的对象
- 检查 css 属性是否应用了 !重要属性
- 检查数据属性是否具有值