2013-12-12 3 views
6

A Noob вопрос здесь. Как мне избежать конфликтов имен имен, когда я использую внешние модули. В настоящее время я использую модуль angular bootstrap, но скачал еще один module, чтобы вместо этого использовать карусель. Они оба имеют одинаковые имена директив carousel, и это вызывает у меня проблемы, если я включу их в свой модуль.angularjs та же директива имена конфликты

var app = angular.module('text', ['fundoo.directives', 'ui.bootstrap']); 

Какое будет лучшее решение для этого?

+0

Я была такая же проблема с пользовательской директивы под названием «матч» противоречащим друг в угловом boostrap. Я переименовал свои директивы с префиксом проекта, чтобы убедиться, что они уникальны. –

+1

[UI Bootstrap] (http://angular-ui.github.io/bootstrap/) давайте создадим собственную версию только с необходимыми модулями. Или просто переименуйте директиву «carousel» на что-то еще в одной из ваших библиотек. – Stewie

+0

Можете ли вы пояснить «причинить мне проблемы»? –

ответ

1

Если у вас есть только одно столкновение имен между директивами, укажите модуль с карусели, которую вы хотите использовать в качестве первой зависимости. От my test Я заключаю, что дополнительные директивы с тем же именем игнорируются (первый выигрывает).

1

Если бы я был вами Я бы использовал префикс для своих собственных Углеродных директив/услуг/и т. Д., Это то, что я делал в последнее время, и у меня нет каких-либо проблем.

В качестве альтернативы просто переименуйте соответствующую директиву в нечто более подробное или конкретное.

5

На самом деле все директивы выполняются, вы можете настроить порядок выполнения с priority paramenter

Приоритет:

Когда есть несколько директив, определенных на одном элементе DOM, иногда это необходимо для указания порядка, в котором применяются директивы. Приоритет используется для сортировки директив до вызова функций компиляции. Приоритет определяется как число. Сначала устанавливаются директивы с большим числовым приоритетом. Функции предварительной ссылки также выполняются в порядке приоритета, но функции пост-ссылки выполняются в обратном порядке. Порядок директив с одинаковым приоритетом не определен. Приоритет по умолчанию 0.

И вы можете также сказать, угловатый, чтобы остановить директиву переваривания в текущем элементе, когда вы обнаруживаете директиву, которая имеет параметр terminal выставиться в true

https://docs.angularjs.org/api/ng/service/$compile

НЕПОДВИЖН проблема с созданием приоритетов немного сложнее для проблемы, поэтому я буду придерживаться решения @nico's

а также, вот плункер для проверки того, что угловой выполняет как

http://plnkr.co/edit/e66I71UKp5mnurcjVzN4

+0

Спасибо @Fardin за стили (; – aemonge

Смежные вопросы