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){…}
)。不能有可选的双向绑定(=
)。但是,您可以选择创建模型,并将其作为第四个参数注入到链接函数中。