2016-03-07 4 views
1

Я использую этот фрагмент от HERE. Он выглядит нормально, но когда я нажимаю на вкладку, вместо изменения содержимого тела (<a href="#tab2success" data-toggle="tab">), он перенаправляет на localhost: 9000/# tab2success, которого не существует. Как это можно достичь? Я просто хочу, чтобы при нажатии на вкладку оно попадало в конкретный контент в теле. Похоже, что href не решение здесь ...href не работает как ожидалось

<div class="col-md-9"> 

     <div class="panel with-nav-tabs panel-success"> 
      <div class="panel-heading"> 
        <ul class="nav nav-tabs"> 
         <li class="active"><a href="#tab1success" data-toggle="tab">Success 1</a></li> 
         <li><a href="#tab2success" data-toggle="tab">Success 2</a></li> 
         <li><a href="#tab3success" data-toggle="tab">Success 3</a></li> 
        </ul> 
      </div> 
      <div class="panel-body"> 
       <div class="tab-content"> 
        <div class="tab-pane fade in active" id="tab1success">Success 1</div> 
        <div class="tab-pane fade" id="tab2success">Success 2</div> 
        <div class="tab-pane fade" id="tab3success">Success 3</div> 
       </div> 
      </div> 

PD: Я использую angularJS, так что если есть какие-либо директивы или что-то, что может помочь, это может быть также допустимым вариантом.

EDIT: Часть моей реализации маршрутизатора. Это просто о части кода, потому что это слишком Лонго, чтобы получить возможность отправлять все это ..

angular 
 
    .module('Test', [ //setting a module 
 
    'oc.lazyLoad', 
 
    'ui.router', 
 
    'ui.bootstrap', 
 
    'angular-loading-bar' 
 
    ]) 
 
    .config(['$stateProvider', '$urlRouterProvider', '$ocLazyLoadProvider', function ($stateProvider, $urlRouterProvider, $ocLazyLoadProvider) { 
 

 
     $ocLazyLoadProvider.config({ 
 
      //$ocLazyLoad returns a promise that will be rejected when there is an error but if you set debug to true,      //$ocLazyLoad will also log all errors to the console. 
 

 
      debug: false, 
 
      events: true, 
 
     }); 
 

 
     // For any unmatched url, redirect to '/dashboard/home' 
 
     $urlRouterProvider.otherwise('/dashboard/rank'); 
 

 
     // Now we set up the states 
 
     $stateProvider 
 
      .state('dashboard', { //parent view 
 
       url: '/dashboard', 
 
       templateUrl: 'views/dashboard/main.html',

+0

Вы видите какие-либо ошибки js в консоли? – xxxmatko

+0

Я думаю, что вы должны заглянуть в [this] (http://stackoverflow.25lm.com/a/33575221) .. –

+1

вы также можете опубликовать реализацию маршрутизации или заявить, что бы вы ни реализовали, это нормально в угловом режиме, это будет дефолт к указанному значению href, если вы не настроили маршруты, загляните в '$ routeProvider' – Sherlock

ответ

1

Это нормальное поведение для href.

Чтобы решить ваш вопрос, пожалуйста, обратитесь к этой статье: Nav tabs in Angular

В принципе, есть флаг, который управляет видимостью вкладок и ng-click события, которое будет обновлять значение флага.

После того, как значение модели (флага) было обновлено, оно автоматически обновит представление.

+0

@MiguelXoelGarcia это он :) – Sherlock

0

Это точно ожидаемое поведение href - если вы не предоставите полный URL, он добавит его на ваш текущий URL (я предполагаю, что вы используете localhost: 9000 при разработке). Посмотрите на this link, в котором объясняется, как использовать его правильно, используя директиву ng-href.

Подводя итог, необходимо использовать формат «Рули» внутри ng-href директивы:

<a ng-href="{{/#tab2success}}" data-toggle="tab"> 
+0

будет ли это работать? насколько я узнаю значения внутри рулей, означает угловую реализацию :) – Sherlock

+0

не работает ... Он изменяет выбранную вкладку, но не содержимое панели. Я хочу оставаться в том же URL-адресе, просто изменяя содержимое панели. Ну, это не мое ожидаемое поведение :) –

+0

OP tagged Угловые и упоминающие директивы в его вопросе – millerbr

0

Там нет необходимости для любого углового кода или overcomplications. Вам просто не хватает файла bootstrap.js, в котором работают вкладки.

Убедитесь, что вы используете правильные классы tab markup, импортируйте файл JS в конце body вашего документа, и все.

Подробнее о вкладках Bootstrap, разметке и способах их работы можно найти в файле official Bootstrap documentation.

+0

Я этого не пропустил. На самом деле это была проблема с бутстрапом + угловая. Решение было здесь angularjs.learnwebtutorials.com/tab-panel-angular.html –

Смежные вопросы