如果我有这样的表格
<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;)冲突?这是不好的命名练习吗?或者这可能完全没问题,会给我带来麻烦吗?
答案 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"
解决方案:只需提供您的模型并形成不同的名称:)