У меня проблема с использованием angular-ui Bootstrap в моем проекте. А именно директива раскрывающегося списка.
К настоящему времени у меня есть HTML, который является просто копией-вставкой из примеров:
<ul>
<li class="dropdown">
<a class="dropdown-toggle"> Drop!</a>
<ul class="dropdown-menu">
<li> one </li>
<li> two </li>
</ul>
</li>
</ul>
Когда Angular компилирует HTML, эта ошибка возникает для каждого раскрывающегося списка, который у меня есть на странице:
TypeError: Object [object Object] has no method 'parent'
at link (http://localhost:3000/vendor/ui-bootstrap-tpls-0.7.0.js:1316:15)
at nodeLinkFn (http://localhost:3000/vendor/angular/angular.js:6124:13)
at compositeLinkFn (http://localhost:3000/vendor/angular/angular.js:5536:15)
at compositeLinkFn (http://localhost:3000/vendor/angular/angular.js:5539:13)
at compositeLinkFn (http://localhost:3000/vendor/angular/angular.js:5539:13)
at compositeLinkFn (http://localhost:3000/vendor/angular/angular.js:5539:13)
at compositeLinkFn (http://localhost:3000/vendor/angular/angular.js:5539:13)
at publicLinkFn (http://localhost:3000/vendor/angular/angular.js:5444:30)
at boundTranscludeFn (http://localhost:3000/vendor/angular/angular.js:5555:21)
at controllersBoundTransclude (http://localhost:3000/vendor/angular/angular.js:6145:18) <a class="dropdown-toggle">
Эта строка связывает событие щелчка с родителем .dropdown-toggle (очевидно, это li.dropdown).
Что я делаю не так? Я потерял более трех часов, пытаясь решить эту проблему, и до сих пор не знаю, что может вызвать эту ошибку.
p.s. HTML скомпилирован из Jade, и я использую Bootstrap 3, но я надеюсь, что в этот раз это не важно.
UPD: по просьбе Никса включаю head и app.js
head
title= title
meta(charset='utf-8')
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel='stylesheet', href='/vendor/bootstrap/css/bootstrap.min.css')
link(rel='stylesheet', href='/stylesheets/client/main.css')
script(src='/vendor/jquery-1.10.2.min.js', type='text/javascript')
script(src='/vendor/angular/angular.js', type='application/javascript')
script(src='/vendor/angular/angular-route.js', type='application/javascript')
script(src='/vendor/ui-bootstrap-tpls-0.7.0.js', type='text/javascript')
script(src='/angular/client/app.js', type='text/javascript')
script(src='/angular/client/menu/controllers.js', type='text/javascript')
//a lot of other app stuff...
это приложение.js
var app = angular.module('clientApp',[
'ngRoute',
'menuControllers'
]);
это контроллеры меню
var menu = angular.module('menuControllers', [
'sharedModels',
'ui.bootstrap'
]);
menu.controller('menuCtrl', ['$scope', 'categoriesModel', 'subcategoriesModel', menuCtrl]);
и полный исходный код menu.jade. он включен в тело ng-app='clientApp'
div.container(ng-controller='menuCtrl')
div(ng-repeat='cat in categoriesModel')
div.btn-group
a.btn.btn-default(href='#!/category/{{cat._id}}') {{cat.name}}
ul
li.dropdown
a.dropdown-toggle Dropdown
ul.dropdown-menu(ng-repeat='subcat in subcategoriesModel')
li: a(ng-href='#!/subcategories/{{subcat._id}}') {{subcat.name}}