2016-06-28 80 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" 
    } 
}