Я хочу использовать это меню в своем угловом приложении http://tympanus.net/Development/ResponsiveMultiLevelMenu/ Но я не сейчас, как вызвать скрипт jquery в угловом режиме, у меня есть поиск, но ничего не работает для меня. У меня есть скрипт вызова в директиве, подобный этому
appDirectives.directive('menu-directive', function() {
return {
restrict: 'EA',
link: function ($scope, $elem, attrs) {
$( '#dl-menu' ).dlmenu();
}
};
});
Но не работает для меня.
Оригинальный сценарий - это
<script>
$(function() {
$( '#dl-menu' ).dlmenu();
});
</script>
Любая помощь пожалуйста.
По умолчанию, угловая использует jQuery-версию jqlite, здесь документация вводит описание ссылки здесь
Кроме того, объект $ element, уже является объектом jquery, вы должны иметь возможность манипулировать элементом и находить дочерние узлы, нам нужно увидеть, как определяется ваше представление, чтобы увидеть, как вы можете применить свою директиву
EDIT: После ваших комментариев в ответе @CarlosMayo и в прямом демо вы опубликовали в своем ответе: http://1stfold.com/taskbox/dev/POS/angular/#/app/scan/ Кажется, вы немного запутались.
Вы реализуете свою директиву в javascript
следующим образом:
.directive('menuDirective')
НЕ
.directive('menu-directive')
Но вы используете его в своей разметке, как
<menu-directive></menu-directive>
НЕ (что вы в своей демонстрации)
<menuDirective></menuDirective>
Angular преобразует camelCase в тире, разделенную строку, для использования в вашей разметке.
Как вы реализуете свою директиву? Возможно, я ошибаюсь, но думаю, что ваше имя отформатировано неправильно, поэтому ваша директива не применяется, поэтому функция ссылки не вызывается.
Я считаю, что угловой случай с верблюдом и превращает его в тире.
Попробуйте следующее:
appDirectives.directive('menuDirective', function() {
return {
restrict: 'EA',
link: function ($scope, $elem, attrs) {
$elem.dlmenu();
}
};
});
Тогда, на ваш взгляд
<menu-directive></menu-directive>
<!--or-->
<div menu-directive></dive>
см. скрипку: http://jsfiddle.net/mazjfjv4/1/
Если вы хотите выполнить функцию jQuery в элементе с директивой, которую вы должны выполнить:
link: function ($scope, $elem, attrs) {
$elem.dlmenu();
}
EDIT: я редактировал код
Инициализировать плагин jquery после угловой готовности.
appDirectives.directive('menu-directive', function($timeout) {
return {
restrict: 'EA',
link: function ($scope, $elem, attrs) {
$timeout(function() {
$('#dl-menu').dlmenu();
}, 0);
}
};
});