是否可以ng-model
在指令(with NgModelController
)中使用而不将其绑定到作为<input>
模板标记集以替换指令标记的标记?
** 编辑 - 这是一个具有所需功能的小提琴,除了span
包装模板
如果我被授予一个愿望,我希望定义一个这样的指令:
<multi-component-zip ng-model='address.zipCode' size="10"/>
其中multi-component-zip
指令是用属性定义的:
template: '<input ng-model="collapsedZip" ng-pattern="/^[0-9]{5}(-[0-9]{4})?$/" type="text" />',
replace: true,
require: 'ngModel'
这里的模板ng-model
将与指令自己的模板分开处理。
我想collapsedZip
在指令中使用来修改它的值,address.zipCode
如下所示:{base: '90210', plusFour: '1234'}
via NgModelController
。
但是,当然,实际上来自父级的 ng-model 被应用于,<input>
所以我得到一个错误:
Multiple directives [ngModel, ngModel] asking for 'ngModel' controller on: <input ng-model="address.zipCode collapsedZip" ... >
也许另一种方法是避免使用 ng-model for collapsedZip
,而是直接对输入元素进行 DOM 操作以读取/显示用户的输入。
没关系,除了该ng-model
属性仍然是从父标记继承的并且违背了指令的目的,因为它绑定到<input>
.
那么为什么不用template
<input>
另一个元素来包装,比如 a<span>
呢?ng-model
这样可以很好地将两者分开。好吧,应该继承其他<input>
属性。size=10
除了ng-model
将数据绑定到指令之外,我还可以使用自定义属性并使用监视表达式或其他方法address.zipCode
与collapsedZip
. 这样可行。但是,如果我可以使用ng-model
它,我为验证编写的其他一些指令会让生活变得更轻松。