Динамическое выпадающее меню Angular и Bootstrap

#javascript #angularjs #twitter-bootstrap

#javascript #angularjs #twitter-bootstrap

Вопрос:

Пытаюсь создать динамическое выпадающее меню для кнопки. Предварительная загрузка меню с сервера в формате json и эта часть работает нормально, но по какой-то причине bootstrap не отображает пункты меню, за исключением последнего в массиве.

 <div class="btn-group">
    <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"> 
        <span class="glyphicon glyphicon-camera"></span> Select images to view <b class="caret"></b>
    </button>
    <ul ng-repeat="tag in tags" class="dropdown-menu">
        <li><a href="#" ng-click="view.setTag(tag)">{{tag}}</a></li>
    </ul>
</div>
  

Переменная ‘tags’ содержит предварительно загруженный массив.

Пробовал в Chrome и IE с тем же результатом.

Если я удалю класс ‘dropdown-menu’ из элемента ul, полный маркированный список будет отображаться следующим образом:

 <Button>
foo *
* bar
* baz
  

Для получения дополнительной информации:

The app.js часть, заполняющая переменную tags:

     this.loadTags = function () {
        $http.get('http://localhost:5566/api/tags').
        success(function (data, status, headers, config) {
            $scope.tags = data.tags;
        }).
        error();
    }
  

(Однако это работает нормально)

Ответ №1:

Обнаружил проблему после некоторых экспериментов. Переместил ng-repeat в элемент li как

     <div class="btn-group">
        <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"> 
            <span class="glyphicon glyphicon-camera"></span> Select images to view <b class="caret"></b>
        </button>
        <ulclass="dropdown-menu">
            <li  ng-repeat="tag in tags"><a href="#" ng-click="view.setTag(tag)">{{tag}}</a></li>
                 ^^^^^^^^^^^^^^^^^^^^^^^
        </ul>
    </div>