AngularJS:分配给范围值,尽管元素上未设置属性

AngularJS:分配给范围值,尽管元素上未设置属性,angularjs,Angularjs,在我的指令中,我创建了一个隔离范围,并将其分配给代码中的ngModel。以下是我的工作范围: scope: { ngModel: '=', value: "=", placeholder: "@" } 在链接中我分配给scope.ngModel的函数。如果在元素上设置了ng model属性,那么这就可以了,但如果不是这样,则会引发错误 Error: Non-assignable model expression: undefined 检查属性是否存在的首选方法是什么?我是否必须使

在我的指令中,我创建了一个隔离范围,并将其分配给代码中的
ngModel
。以下是我的工作范围:

scope: {
  ngModel: '=',
  value: "=",
  placeholder: "@"
}
链接中
我分配给
scope.ngModel的函数。如果在元素上设置了
ng model
属性,那么这就可以了,但如果不是这样,则会引发错误

Error: Non-assignable model expression: undefined

检查属性是否存在的首选方法是什么?我是否必须使用
元素显式执行此操作。hasAttribute
还是我的操作完全错误?

如果指令中的ngModel属性是可选的,则必须在将任何值指定给范围变量之前检查它是否存在,否则Angular将引发错误。我会使用
if(attrs.ngModel){…}
element.attrs('ngModel')
检查它是否存在


使用
ngModel
您还可以选择在指令链接功能中使用。通过
require:“^ngModel”
^
如果是可选的),ngModelController将作为链接控制器中的第四个参数可用(
link:function(scope,element,attrs,ngModelController){…}
)。

不能有可选的双向绑定(
=
)。但是,您可以选择创建模型,并将其作为第四个参数注入到链接函数中。