2015-03-19 2 views
1

У меня возникли проблемы с тем, чтобы содержимое моей вкладки отображалось правильно при загрузке страницы. У меня есть фабрика объектов под названием apiList, затем я использую два ng-repeats, один из которых попадает в каждый объект в apiList, а затем следующий, который выполняет итерацию через этот объект и помещает все свои данные на страницу. Я использую #tab{{$index}}, чтобы мои переключатели данных были выровнены между кнопками и вкладками.ng-repeat on bootstrap tab-content/tab-pane

Проблема связана с тем, как я использую атрибут active на своем tab-pane.

У меня есть три известных теста.

  1. Я могу только получить информацию от первого объекта, используя условие ng-class="{ 'active': $index == 0}" как в .. <div ng-repeat="(key, data) in apiList[0]" class="tab-pane active" id="tab{{$index}}" ng-class="{ 'active': $index == 0}"> enter image description here

  2. Если удалить условную от линии, то ничего не появляется enter image description here

  3. И если я просто добавлю active к значению панели (без условий) (т.е. <div ng-repeat="(key, data) in apiList[0]" class="tab-pane active" id="tab{{$index}}"> Все они появляются. enter image description here

Так что моя проблема, кажется, с тем, как мне нужно, чтобы включить/выключить мой активный для нг-повтора, и я просто заблудиться.

Кроме того, нажатие на учетные записи/клиенты не обновляет вкладки. Они оба имеют правильные идентификаторы переключения данных (0 и 1) в отношении вкладок, поэтому я предполагаю, что это часть проблемы active. И всякий раз, когда я нажимаю на панели вкладок, они просто расширяются.

Здесь моя фабрика, ng-repeat (s) и код, который был моей первоначальной настройкой (функциональной).

завод

.factory('APIMethodService', [function() { 
    var Head = "api.verifyvalid"; 
    return { 
    apis: [ 
     { 
     accounts: [ 
     { 
      parameters : [ 
      { 
       name : "Accounts", 
       version : "1.0" 
      } 
      ], 
      uri: Head + "/v1/accounts/account_number", 
      methods : [ 
      { 
       name: "Account Number", 
       desc: "Returns the account number." 
      }, { 
       name: "Account Money", 
       desc: "Returns the monetary amount within the account." 
      } 
      ] 
     }, 
     { 
      parameters : [ 
      { 
       name : "Accounts", 
       version : "2.0" 
      } 
      ], 
      uri: Head + "/v2/accounts/account_number", 
      methods: [ 
      { 
       name: "Account Number", 
       desc: "Returns the account number." 
      }, { 
       name: "Account Money", 
       desc: "Returns the monetary amount within the account." 
      }, { 
       name: "Account Token", 
       desc: "Returns the account's token." 
      } 
      ] 
     } 
     ], 
     customers:[ 
     { 
      parameters : [ 
      { 
       name : "Customers", 
       version : "1.0" 
      } 
      ], 
      uri: Head + "/v1/customers/customer_number", 
      methods : [ 
      { 
       name: "Customer Name", 
       desc: "Returns the customer's name." 
      }, { 
       name: "Customer ID", 
       desc: "Returns the customer's ID." 
      } 
      ] 
     }, 
     { 
      parameters : [ 
      { 
       name : "Customers", 
       version : "2.0" 
      } 
      ], 
      uri : Head + "/v2/customers/customer_number", 
      methods: [ 
      { 
       name: "Customer Name", 
       desc: "Returns the customer's name." 
      }, { 
       name: "Customer ID", 
       desc: "Returns the customer's ID." 
      }, { 
       name: "Customer Email", 
       desc: "Returns the customer's email." 
      } 
      ] 
     } 
     ] 
    } 
    ] 
    }; 

нг-повтор (только правая вкладки)

<div class="col-md-9"> 
    <div class="tab-content"> 
     <div ng-repeat="(key, data) in apiList[0]" class="tab-pane active" id="tab{{$index}}"> 
     <div ng-repeat="api in apiList[0][key]"> 
      <div class="panel panel-info" id="panel{{$index}}"> 
      <div class="panel-heading"> 
       <h4 class="panel-title"> 
       <a data-toggle="collapse" data-target="#collapse{{key}}{{$index}}" class="collapsed"> 
        {{api.uri}}<i class="newTab" ng-click="apiTab(api)">(Open in new tab)</i> 
       </a> 
       </h4> 
      </div> 
      <div id="collapse{{key}}{{$index}}" class="panel-collapse collapse"> 
       <div class="panel-body"> 
       <table class="table"> 
        <tr ng-repeat="method in api.methods"> 
        <td>{{method.name}}</td> 
        <td>{{method.desc}}</td> 
        </tr> 
       </table> 
       </div> 
      </div> 
      </div> 
     </div> 
     </div> 
    </div> 
</div> 

Следующий код является то, что я изначально имел, прежде чем пытаться грызть его вниз и т.д.

<div class="col-md-9" style="display:none"> 
      <div class="tab-content"> 

      <!-- Accounts --> 

      <div class="tab-pane active" id="tab0"> 
       <div ng-repeat="api in apiList[0].accounts"> 
       <div class="panel panel-info" id="panel0"> 
        <div class="panel-heading"> 
        <h4 class="panel-title"> 
         <a data-toggle="collapse" data-target="#collapseAccountsV{{$index}}" class="collapsed"> 
         {{api.uri}} 
         </a> 
         <i class="newTab" ng-click="apiTab(api)">(Open in new tab)</i> 
        </h4> 
        </div> 
        <div id="collapseAccountsV{{$index}}" class="panel-collapse collapse"> 
        <div class="panel-body"> 
         <table class="table"> 
         <tr ng-repeat="method in api.methods"> 
          <td>{{method.name}}</td> 
          <td>{{method.desc}}</td> 
         </tr> 
         </table> 
        </div> 
        </div> 
       </div> 
       </div> 
      </div> 

      <!-- Customers --> 

      <div class="tab-pane" id="tab1"> 
       <div ng-repeat="api in apiList[0].customers"> 
       <div class="panel panel-info" id="panel1"> 
        <div class="panel-heading"> 
        <h4 class="panel-title"> 
         <a data-toggle="collapse" data-target="#collapseCustomersV{{$index}}" class="collapsed"> 
         {{api.uri}}<i class="newTab" ng-click="apiTab(api)">(Open in new tab)</i> 
         </a> 
        </h4> 
        </div> 
        <div id="collapseCustomersV{{$index}}" class="panel-collapse collapse"> 
        <div class="panel-body"> 
         <table class="table"> 
         <tr ng-repeat="method in api.methods"> 
          <td>{{method.name}}</td> 
          <td>{{method.desc}}</td> 
         </tr> 
         </table> 
        </div> 
        </div> 
       </div> 
       </div> 
      </div> 

      <!-- Other --> 
      <div class="tab-pane fade" id="tab3"> 
       <!-- TBA --> 
      </div> 
      </div> 
     </div> 
+1

Пожалуйста, ответьте на вопрос своим решением или удалите вопрос. Мы не делаем ** РЕШЕННО ** здесь. – j08691

+0

@ j08691 Что вы посоветуете, я не против удаления, но не был, если человек, который поддержал это было просто любопытно или также имел проблему. Прости! :( – Austin

+1

Это хорошо. Вы можете разместить свое решение в качестве ответа, как и любой другой, и вы тоже можете его принять (но вы не получите очков). – j08691

ответ

0

Ошибка Noob, все работает отлично! Я использовал свой старый код в качестве базовой схемы на той же странице и установил этот старый код на style="display:hidden", но это все еще означало, что идентификаторы были отделены от DOM, поэтому я не мог правильно изменить свою вкладку (дубликаты/конфликтующие идентификаторы)).