【问题标题】:angularjs: how to disable directive for a specific elementangularjs:如何禁用特定元素的指令
【发布时间】:2014-02-06 00:23:49
【问题描述】:

我想展示如何使用指令的代码 sn-p。但是,该指令存在于此应用程序中,所以当我有

<pre>
    <code>
        <bar-foo>bar foo</bar-foo>
    </code>
</pre>

我正在使用highlight.js,但 angular 并不在意并将指令应用于 bar-foo 元素。如何禁用该特定元素的指令?

【问题讨论】:

    标签: javascript angularjs angularjs-directive highlight.js


    【解决方案1】:

    您正在寻找ng-non-bindable:

    <pre ng-non-bindable>
        <code>
            <bar-foo>bar foo</bar-foo>
        </code>
    </pre>
    

    【讨论】:

    • @Michael 谢谢。已在帖子中更正。
    【解决方案2】:

    我想要为&lt;bar-foo&gt; 元素添加一个属性,例如&lt;bar-foo data-is-disabled="{{true}}" &gt;。在指令中,我将在 link 方法的最顶部添加:

    if ($scope.$eval(attrs.isDisabled)) return ;` 
    

    如果我需要确保在返回之前清除所有内容,我可以执行以下操作:

    element.replaceWith('')
    

    【讨论】:

    • 如果你有(例如)'transclude: true',它将如何工作。你无法阻止(我认为)
    • 这就是为什么我包含 element.replaceWith('') @JeanlucaScaljeri 我认为这会解决它,但不要猜测它尝试一下 :)
    • 虽然这可能行得通,但这不是要走的路,您不想更改指令,因为您想在演示页面上显示代码
    • @JeanlucaScaljeri 我在想,如果你在 ng-repeat 中有你的指令,并且在你想禁用你的指令的备用行上,该怎么办。是否有可能以不同的方式做到这一点?
    猜你喜欢
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2015-01-26
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    相关资源
    最近更新 更多