Я пишу модуль, который будет создавать динамическое меню на лету. Как запустить директиву после добавления нового <li>
с классом css dropdown
, который также добавлен ng-классом.
Код:Динамическое добавление выпадающего меню в AngularJS + Bootstrap
angular.module('myapp', ['ui.bootstrap'])
.factory("menuService", ["$rootScope", function($rootScope) {
"use strict";
return {
menu: function() {
$rootScope.globalMenu;
},
setMenu: function(menu) {
$rootScope.globalMenu = menu;
}
};
}])
.controller("MainController", ["$scope", "menuService",
function($scope, menuService){
menuService.setMenu([{href:"#", label:"Dropdown",
dropdown:[{href:"/edit", label:"Edit"}]},
{href:'/', label:'test'}]);
$scope.bodyText = "Some text";
}]);
Это код в HTML
<ul class="navbar-nav nav navbar-left">
<li ng-repeat="menu_element in globalMenu" ng-class="{dropdown: menu_element.dropdown != undefined}">
<a ng-href="{{menu_element.href}}" ng-class="{'dropdown-toggle': menu_element.dropdown != undefined}">
{{menu_element.label}}
<b class="caret" ng-if="menu_element.dropdown != undefined"></b>
</a>
<ul ng-if="menu_element.dropdown != undefined" class="dropdown-menu">
<li ng-repeat="sub_element in $parent.menu_element.dropdown">
<a ng-href="{{sub_element.href}}">{{sub_element.label}}</a>
</li>
</ul>
</li>
</ul>
Ссылка на plunker: http://plnkr.co/edit/pgH35mmsjLJqV4yJuSYq?p=preview
Так что я хочу сделать то же самое или подобно тому, как для JQuery, там я буду запускать $("li.dropdown").dropdown()
после добавления целых блоков ul> li. Я новичок в Angular, и я хочу сделать это угловато.
Я читал о директивах, как их использовать. Но я не мог найти, как применять директиву во время выполнения. Я читал о transclude: element
в директиве (ui.bootstrap.dropdownToggle) не разрешено. Я уверен, что есть простой способ, но не смог найти его сам ...
Это не решит вопрос, но уже существует популярная библиотека для [Директив Bootstrap AngularJS на github] (http://angular-ui.github.io/bootstrap/) – Philipp
Да, я использую его можете проверить это на плункер, с которым я разместил ссылку. – samurai
Не заметил, как вы не делали 'module ('myapp', ['ui-bootstrap'])', так или иначе, директивы автоматически выбираются AngularJS, который проверяет атрибуты элементов, для элементов под элементом с атрибутом 'ng-app'. – Philipp