Я пытаюсь использовать директиву выпадающего списка UI Bootstrap для углового (https://angular-ui.github.io/bootstrap/#/dropdown).
Я копирую пример так же, как на странице (для одной кнопки), и я получаю эту ошибку:
TypeError: d.init не является функцией
Здесь разметка:
<div class="album-selector col-sm-12" ng-controller="DropdownController">
<div class="btn-group" dropdown is-open="status.isopen">
<button type="button" class="btn btn-primary dropdown-toggle" dropdown-toggle ng-disabled="disabled">
Button dropdown <span class="caret"></span>
</button>
</div>
<ul class="dropdown-menu" role="menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
</div>
И это контроллер:
angular.module('DropdownCtrl', ['ui.bootstrap']).controller('DropdownController', function ($scope) {
$scope.items = [
'The first choice!',
'And another choice for you.',
'but wait! A third!'
];
$scope.status = {
isopen: false
};
$scope.toggled = function(open) {
$log.log('Dropdown is now: ', open);
};
$scope.toggleDropdown = function($event) {
$event.preventDefault();
$event.stopPropagation();
$scope.status.isopen = !$scope.status.isopen;
};
});
ПРИМЕЧАНИЕ. Кажется, что ошибка "d.init" происходит только путем записи "выпадающего списка" в div (или в любом месте документа), удаление этой директивы приводит к ошибке, но выпадающий список все еще не работает.
ПРИМЕЧАНИЕ 2. Я уже использую другие директивы UT Bootstrap на той же странице. Я получаю эту ошибку, например, Карусель, Кнопки, Модальные и т.д. Это происходит только с директивой выпадающего списка.
У вас есть конфликт в имени вашего контроллера.
Angular-UI использует "DropdownController" как один из своих внутренних контроллеров.
Измените имя контроллера на что-то другое, и оно должно работать. Как правило, хорошая практика заключается в том, чтобы иметь какое-то соглашение для вашего именования контроллера. Например, если модуль был выведен "Dropdown", вы можете добавить "dd" к началу каждого имени контроллеров в нем.