是否可以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它,我为验证编写的其他一些指令会让生活变得更轻松。