Я использую angular-bootstrap-colorpicker в своем приложении и имею странную проблему. В модуле colorpicker есть фабрика с именем Slider
. Это приводит к тому, что colorpicker не работает, потому что у моего приложения также есть фабрика под названием Slider
. Рефакторинг каждого случая этого в приложении невозможен, и в любом случае это похоже на небрежное обходное решение. Ошибка броска являетсяПредотвращение фабрики сторонних производителей с использованием фабрики моего приложения с тем же именем
Uncaught TypeError: Slider.setSaturation is not a function
который я пришел к выводу, потому что завод моего приложения не имеет никакого метода setSaturation
и Угловые является «путать». Я не знаю достаточно о фабриках и как Angular их организует, но кажется странным, что они будут доступны в таких модулях. например
angular.module('thomasApp', [])
...
.factory('Slider', ...
влияет
angular.module('colorpicker.module', [])
...
.factory('Slider', ...
или наоборот.
Есть ли какой-нибудь способ разделить этот цветной указатель так, чтобы он не мешал моей фабрике Slider
?
Edit:
Я согласен с ответом, который связан с использованием префикса в качестве пространства имен является смарт-идея. Однако для этого потребуется нереалистичный объем рефакторинга. Я благодарен за ответ ниже, но для меня это недостаточно, чтобы я мог действовать.
1) Это действительно лучшее решение (кроме префикса от начала проекта)? - Если я сделаю такое изменение, оно будет удалено в следующий раз, когда я обновляю bower, или кто-то вытащит мой проект и установит bower install?
2) Есть ли лучший способ? - Если нет, можно ли расширить текущий ответ и объяснить, что происходит?
Вы должны переименовать завод, если вы хотите использовать эту треть -партийный модуль.Я рекомендую использовать префикс типа «thomasSlider» или просто «thSlider». Вы также можете использовать такие периоды, как этот «thomas.Slider», но вам придется использовать массивные инъекции, чтобы передать его функции. – cgTag
@ThinkingMedia Действительно ли я не могу просто переименовать части стороннего модуля? – 1252748
Возможный дубликат [Модули и конфликты имен/имен в AngularJS] (http://stackoverflow.com/questions/13406791/modules-and-namespace-name-collision-in-angularjs) – fracz