Вкладки начальной загрузки Twitter на странице JHipster — как это сделать?

#twitter-bootstrap #jhipster

#twitter-bootstrap #jhipster

Вопрос:

У меня есть сгенерированная JHipster html-страница. Нужны вкладки, и этот код является основным примером, предоставляемым Bootstrap:

 <ul class="nav nav-tabs">
    <li><a data-toggle="tab" href="#sectionA">Section A</a></li>
    <li class="active"><a data-toggle="tab" href="#sectionB">Section B</a></li>
</ul>
<div class="tab-content">
    <div id="sectionA" class="tab-pane fade in active">
        <p>Section A content…</p>
     </div>
    <div id="sectionB" class="tab-pane fade">
        <p>Section B content…</p>
    </div>
</div>
  

При первом рендеринге все выглядит нормально, но при нажатии на вкладку вы попадаете на домашнюю страницу. Предположительно, это означает, что он не может найти, например, href =»#sectionB».

Угадайте: URL страницы

 http://localhost:8080/#/mypagename
  

итак, # выбрасывает ссылку?

Я перепробовал все, что мог придумать.

Предложения?

Комментарии:

1. У меня все еще нет ответа на этот вопрос. Если кто-то может придумать какой-нибудь подход к устранению ошибок, который был бы очень полезен

Ответ №1:

Я знаю, что этот вопрос старый, но подумал, что запишу ответ, так как я только что столкнулся с этой же проблемой.
Я следовал инструкциям здесь.

В принципе, обычные ссылки href не работают в Angular, вам нужно использовать код javascript, предоставленный на сайте начальной загрузки.

 $('#myTab a').click(function (e) {
  e.preventDefault()
  $(this).tab('show')
})
  

Конечно, это Angular, поэтому вам следует написать директиву для манипуляций с пользовательским интерфейсом.

 angular.module('myApp')
.directive('showtab',
    function () {
        return {
            link: function (scope, element, attrs) {
                element.click(function(e) {
                    e.preventDefault();
                    $(element).tab('show');
                });
            }
        };
    });
  

Затем в вашем html,

 <ul class="nav nav-tabs">
    <li class="active"><a showtab="" href="#tabone">Tab One</a></li>
    <li><a showtab="" href="#tabtwo">Tab Two</a></li>
</ul>
<div class="tab-content">
    <div class="tab-pane active" id="tabone">...</div>
    <div class="tab-pane" id="tabtwo">...</div>
</div>
  

Директива showtab включит javascript, необходимый для переключения вкладок.

Примечание: вам понадобится bootstrap.js включен в ваш HTML-файл.

Ответ №2:

Jhispter с angularjs использует https://angular-ui.github.io/bootstrap / поскольку использование bootstrap с angular не полностью совместимо, поэтому способ создания вкладок выглядит следующим образом:

 <uib-tabset>
    <uib-tab index="0" heading="Justified">Justified content</uib-tab>
    <uib-tab index="1" heading="SJ">Short Labeled Justified content</uib-tab>
    <uib-tab index="2" heading="Long Justified">Labeled Justified</uib-tab>
</uib-tabset>