Использование разворота бутстрапа с угловыми
Я пытаюсь включить приведенную ниже загрузочную панель в моем приложении angular. Однако, когда я нажимаю "Развернуть", angular, похоже, видит href="#collapseOne"
, а затем перенаправляет на домашнюю страницу, а не сворачивает панель. Моя маршрутизация выглядит так, и я думаю, что проблема с otherwise({redirectTo: '/home'});
вызывает проблему. Любые предложения?
angular.module('App')
.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users', {templateUrl: 'partials/users/user-list.html', controller: 'UserCtrl'}).
when('/users/new', {templateUrl: 'partials/users/user-new.html', controller: 'UserNewCtrl'}).
when('/users/:userid', {templateUrl: 'partials/users/user-detail.html', controller: 'UserDetailCtrl'}).
otherwise({redirectTo: '/home'});
}]);
Панель -
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
Expand
</a>
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
...
</div>
</div>
</div>
</div>
Ответы
Ответ 1
Как упоминалось в аналогичном вопросе здесь, просто измените свой href атрибутом data-target
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a href="javascript:;" data-toggle="collapse" data-parent="#accordion" data-target="#collapseOne">
Expand
</a>
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
...
</div>
</div>
</div>
</div>
Ответ 2
Вы можете использовать директиву аккордеона из AngularJS UI Bootstrap, которая строит поверх twitter bootstrap директивы collapse.
Пример:
<accordion >
<accordion-group heading="Static Header, initially expanded" is-open="true">
This content is straight in the template.
</accordion-group>
</accordion>
Пример в реальном времени: http://jsfiddle.net/choroshin/U89bW/3/
Ответ 3
У меня была такая же проблема, и я не хотел добавлять дополнительную библиотеку за пределы начальной загрузки. Как рекомендуется, вы можете использовать data-target="#your-collapsing-element"
, полностью удалив атрибут href
.
Основы
Чтобы сделать сбой панели, вам необходимо:
-
В элементе, используемом для запуска коллапса:
data-toggle="collapse" data-target="#my-collapsing-element"
-
Об элементе, который разрушается:
id="my-collapsing-element"
-
В элементе, который обертывает как элемент "триггер", так и свертывающий элемент:
class="panel"
Объединяя все это
Вы можете дополнительно добавить родительские элементы, чтобы сделать его частью группы, и добавить добавить классы css "collapse in
" к свернутому элементу, чтобы закрыть его состояние по умолчанию. Полный пример:
<div id="accordion">
<div class="panel">
<a data-toggle="collapse" data-parent="#accordion" data-target="#collapse1">
Heading 1
</a>
<div id="collapse1">
Content for panel 1
</div>
</div>
<div class="panel">
<a data-toggle="collapse" data-parent="#accordion" data-target="#collapse2">
Heading 2
</a>
<div id="collapse2" class="collapse in">
Content for panel 2
</div>
</div>
</div>
Вы можете улучшить поведение кнопок с помощью элемента <button>
, а не <a>
. Переопределение стиля бутстрапа для .panel
можно сделать, добавив свой собственный стиль для класса panel
css.
<div class="panel its-my-panel">
.panel.its-my-panel {
margin-bottom: 0;
background-color: transparent;
border: none;
border-radius: 0;
-webkit-box-shadow: none;
box-shadow: none;
}
.my-panel-heading {
cursor: pointer;
}
/* Overrides for .panel--theonly required bootstrap class */
.panel.my-panel-overrides {
margin-bottom: 0;
background-color: transparent;
border: none;
border-radius: 0;
-webkit-box-shadow: none;
box-shadow: none;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<div id="accordion">
<div class="panel my-panel-overrides">
<a class="my-panel-heading" data-toggle="collapse" data-parent="#accordion" data-target="#collapse1">
Collapsible Group 1</a>
<div id="collapse1" class="collapse in">
Content for panel 1
</div>
</div>
<div class="panel my-panel-overrides">
<a class="my-panel-heading" data-toggle="collapse" data-parent="#accordion" data-target="#collapse2">
Collapsible Group 2</a>
<div id="collapse2" class="collapse">
Content for panel 2
</div>
</div>
<div class="panel my-panel-overrides">
<a class="my-panel-heading" data-toggle="collapse" data-parent="#accordion" data-target="#collapse3">
Collapsible Group 3</a>
<div id="collapse3" class="collapse">
Content for panel 3
</div>
</div>
</div>
Ответ 4
- Измените все
href
, чтобы развернуть-свернуть до data-target
.
-
data-target
и id
для div
, которые нужно развернуть и свернуть, не должны содержать дефис.