1

是否可以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.zipCodecollapsedZip. 这样可行。但是,如果我可以使用ng-model它,我为验证编写的其他一些指令会让生活变得更轻松。

4

0 回答 0