表单命名和模型命名建议

时间:2014-09-07 09:09:53

标签: angularjs

如果我有这样的表格

<form name="form" ng-submit="form.save()">
  <input type="text" name="name" ng-model="form.name">
  <button type="submit" ng-disabled="form.name.$pristine">Submit</button>
</form>

这里我有一个名为&#34; form&#34;的表单,一个名为&#34的输入字段;名称&#34;和名为&#34; form.name&#34;的模型。 formname + fieldname(&#34; form.name&#34;)是否会以某种方式与模型名称(&#34; form.name&#34;)冲突?这是不好的命名练习吗?或者这可能完全没问题,会给我带来麻烦吗?

1 个答案:

答案 0 :(得分:4)

说实话,这是一个可怕的想法,命名你的形式与你的模型相同。在Angular中声明表单时,将在视图控制器的Scope上创建表单名称的表单对象。如果一个名为与表单相同的模型对象将导致混合2个对象,则由angular创建的表单对象具有许多自己的字段和函数,为什么要用它来丢弃模型呢?如果您尝试运行您发布的代码并在表单上放置$watch,您会注意到模型值甚至不能正确绑定:

$scope.$watch("form", function (v) {
  console.log(v);
}, true);

结果:

$addControl: function (control) {
$dirty: true
$error: Object
$invalid: false
$name: "form"
$pristine: false
$removeControl: function (control) {
$setDirty: function () {
$setPristine: function () {
$setValidity: function (validationToken, isValid, control) {
$valid: true
name: "[object Object]john"

解决方案:只需提供您的模型并形成不同的名称:)