【问题标题】:Compile custom directive before ui-bootstrap directive在 ui-bootstrap 指令之前编译自定义指令
【发布时间】:2014-08-01 05:00:43
【问题描述】:

我正在尝试为 datepicker 创建自己的指令,因此当在移动设备上打开页面时,输入类型更改为 type="date" 并显示本机 datepicker 而不是 ui-bootstrap datepicker,我仍然会显示在桌面上。

我希望首先编译我的指令,因此在我的指令的 compile 函数中,我可以删除 ui-bootstrap datepicker 指令,而这个指令不会被编译。

有没有办法做到这一点?我已经尝试在我的指令上设置priority:9999,但仍然首先编译 ui-bootstrap 指令。

我现在正在尝试这样的事情:

<input type="text"
        ng-model="model.date"
        ng-click="datepicker.open = true"
        my-directive
        datepicker-popup="{{datepicker.format}}"
        datepicker-options="datepicker.options"
        is-open="datepicker.open"
        min-date="datepicker.minDate">

【问题讨论】:

    标签: angularjs angularjs-directive angular-ui angular-ui-bootstrap


    【解决方案1】:

    Angular 指令的优先级从 0 开始(意思是最重要的)。因此,如果您希望首先执行指令,则需要指定

    priority: 0
    

    【讨论】:

    • 设置 priority:0 确实使我的指令首先编译,但是,即使我从指令的 compile 函数中的输入中删除 ui-bootstrap 指令,ui-bootstrap 指令的链接函数仍然执行所以我仍然有这个问题。尽管我无法解决我的问题,但我会将其标记为正确。
    • 注意:好吧,也许这个答案已经过时并且事情已经发生了变化,但现在我们可以确定优先级为 0,您的指令将最后执行。现在优先执行具有最高值的优先级:code.angularjs.org/1.4.9/docs/api/ng/service/$compile
    猜你喜欢
    • 2019-11-06
    • 2017-06-29
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2017-07-29
    • 2011-03-02
    • 2012-12-14
    相关资源
    最近更新 更多