угловая ошибка выпадающего загрузчика: d.init не является функцией

0

Я пытаюсь использовать директиву выпадающего списка 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-bootstrap

1 ответ

1
Лучший ответ

У вас есть конфликт в имени вашего контроллера.

Angular-UI использует "DropdownController" как один из своих внутренних контроллеров.

Измените имя контроллера на что-то другое, и оно должно работать. Как правило, хорошая практика заключается в том, чтобы иметь какое-то соглашение для вашего именования контроллера. Например, если модуль был выведен "Dropdown", вы можете добавить "dd" к началу каждого имени контроллеров в нем.

  • 0
    Вот и все! Спасибо!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню