覆盖指令的链接功能

时间:2015-03-08 21:59:25

标签: javascript angularjs twitter-bootstrap

我正在开发一个使用优秀UI Bootstrap library的应用程序。一切正常,但是我在IE10上打破崩溃插件时遇到了bug。我正在使用主导航的崩溃插件,这个破坏是一个非常大的问题,所以我需要找到解决方法。

我真的不想破解主库。似乎我应该能够使用找到hereherehere的方法来装饰这个第三方指令,但我似乎无法让它工作。

具体来说,我试图覆盖置于collapse指令的link()函数中的extend()函数来检查IE10浏览器。

有没有人这样做过或者知道怎么做?

1 个答案:

答案 0 :(得分:18)

当然!您可以修饰指令并对其进行扩展或完全覆盖它。这是一个很棒的blog post on this

最直接的方法就是:

app.config(function($provide) {
  $provide.decorator('collapseDirective', function($delegate) {
    var directive = $delegate[0];

    var link = function myLinkFnOverride(scope, element, attrs) {
           // code here...
    }

    directive.compile = function() {
      return function(scope, element, attrs) {
        link.apply(this, arguments);
      };
    };

    return $delegate;
  });
});

将完全覆盖原始链接功能(需要复制粘贴所有内容并更改您想要的部分)