2016-06-28 79 views
1

我已经在我的应用程序中使用bower包含了角引导程序库。覆盖来自ui-bootsrap的功能

我目前正在使用一个(旧)版本,其中包含一个错误这是在一个较新的版本解决。但是,在我的情况下,升级尚不可能

我也想过在我的index.html页面的bower的导入行下面添加一个自定义的修改后的js文件,但会发生编译错误。

我确切地知道了包含库0123(的.js中的bug的正确LOC,但是这些更改在该文件中不适用,因为我在自动化构建系统中开发了一个只会覆盖我的更改的文件。

因此,我想覆盖函数在我调用bug函数的地方(页面的控制器或服务)。

这甚至可能吗?如果是这样,我怎么才能最好地覆盖它?

+1

黑客入侵您的自动化构建比以这种方式黑客攻击代码更好 – amd

+0

@Ahmad无法与您达成更多共识。它会在几个星期内发生,只是升级需要一个新版本的引导,这需要一个新版本的角度,这迫使我改变整个网站。即使这项工作计划在几周内完成,但目前我需要提出一个“快速”解决方案。 – Joetjah

+0

你会得到什么样的编译错误?你为什么得到那个?你如何编译你的代码? –

回答

2

您可以为您想要更改的方法创建装饰器。

假设你的工厂看起来像下面

app.factory('myService',function(){ 
    return { 
    getData: function() { 
     // your code 
    } 
    }; 
}); 

现在,如果你想改变的getData()函数的功能,你可以像下面

app.config(function($provide) { 

    $provide.decorator('myService', function($delegate) { 
    var oldFunc = $delegate.getData; 
    $delegate.getData = function() { 
     // your updated code 
     return oldFunc(); 
    }; 

    return $delegate; 
    }); 
}); 
+0

这个想法很好,但是代码片段会比截图好得多。 –

+0

Check now ..更新了帖子。 –

+0

好得多。 (我修正了一些错字,但现在看起来不错,+1) –

2

在GitHub上叉angular-bootstrap,使所需的更改,并使用bower.json中的git url,如:

{ 
    "dependencies": { 
    "angular-bootstrap": "[email protected]:yourgithubuser/angular-bootstrap.git" 
    } 
}