【问题标题】:angular Accessing ngModel controller in directive with custom template in compile在编译中使用自定义模板在指令中访问 ngModel 控制器
【发布时间】:2013-10-26 10:59:45
【问题描述】:

我想访问 ngModel 控制器(以便稍后使用 setValidity 来验证自定义输入字段)。但是,当我想将该指令用作属性(而不是类)时,replaceWith 函数会抛出一个错误,即找不到 ngModel 控制器。我在这里创建了一个小提琴:

jsfiddle.net/6HcGS/396

谁能帮帮我?

这与我的第一个问题有关:

databinding custom directive angular with replacing html in compile function

【问题讨论】:

    标签: angularjs directive


    【解决方案1】:
    <input zippy ng-model="title">
    

    zippy 和 ngModel 都是以特定顺序呈现的指令。在这种情况下,zippy 在 ngModel 之前被渲染。您可以像 Maxim Shoustin 建议的那样重新排序指令,也可以通过在指令创建函数上提供 priority 属性来指定渲染顺序,如下所示:

      .directive('zippy', function($compile){
        return {
          restrict: 'A',
          priority: -1,
          replace: true,
          ...
    

    默认优先级为 0。优先级较高的指令首先呈现。

    【讨论】:

    • 是的,我想设置优先级,它应该也可以。在我的项目中,我首先尝试编写自定义指令。无论如何+1 :)
    • 谢谢一堆!我永远不会考虑优先使用指令来完成这项工作!
    【解决方案2】:

    相反

    <input zippy ng-model="title"/>
    

    尝试在ng-model之后写属性like:

     <input  ng-model="title" zippy/>
    

    ng-model 指令之前加载zippy 很有趣。

    就像 bekite 说的,设置priority: -1

    演示Fiddle

    【讨论】:

    • 谢谢!很好地回答了我的问题!
    猜你喜欢
    • 2017-05-14
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多