2016-06-28 3 views
1

Я включил библиотеку angular-bootstrap в мое приложение, используя беседку.Переопределить функцию из ui-bootsrap

Я в настоящее время использую (старую) версию , содержащую ошибку, которая решается в более новой версии. Однако в моей ситуации обновление еще не возможно.

Я также подумал о добавлении пользовательского измененного файла js под линией импорта беседки на моей странице index.html, но произошли ошибки компиляции.

Я точно знаю правильный LOC, содержащий ошибку в .js библиотеки ui-bootstrap.js, но эти изменения не были бы уместны в этом файле, потому что я развиваюсь в автоматизированной системе зданий, которая просто перезаписывает мои изменения.

Поэтому Я хотел бы переписать функцию в место (контроллер или сервис страницы), где я вызываю прослушиваемую функцию.

Возможно ли это? Если да, то как я могу лучше всего переписать его?

+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

Отправляю сообщение. –

+0

Гораздо лучше. (Я исправил некоторую опечатку, но теперь хорошо выглядит, +1) –

2

Вилка angular-bootstrap на GitHub, сделать желаемые изменения и использовать git url в bower.json, например:

{ 
    "dependencies": { 
    "angular-bootstrap": "[email protected]:yourgithubuser/angular-bootstrap.git" 
    } 
} 
Смежные вопросы