简体   繁体   English

Angular.js:多个父子选项卡,使选项卡处于活动状态

[英]Angularjs: Multiple parent-child tabs, make tab active

Using angularjs here: 在这里使用angularjs:

I have 2 parent tabs and under each of these tabs there can be 1 or mulitple child tabs. 我有2个父标签,在每个标签下都可以有1个或多个子标签。

Code as below: 代码如下:

<tabset class="tabbable-line">
    <tab ng-repeat="(key,value) in tabsData" heading="{{key}}">
      <tabset class="tabbable-line">
        <tab class="tabbable-line" ng-if="key=='master1'" ng-repeat="(k2,v2) in value" heading="{{k2}}">
          <!--some data-->
        </tab>
        <tab class="tabbable-line" ng-if="key=='master2'" ng-repeat="(k2,v2) in value" heading="{{k2}}">
          <!--some data-->
        </tab>
      </tabset>
    </tab>
  </tabset>

These tabs are created from json. 这些选项卡是从json创建的。 Sample json as: 样本json为:

var tabsData = { 
    "master1": {
      "master1-child1": ["some-data1"], 
      "master1-child2": ["some-data2"]
    }, 
    "master2": {
         "master2-child1": ["some-data3"], 
         "master2-child2": ["some-data4"]
    }
 };

On the button click I want to highlight a particular tab both parent and the child tab but I am not able to do so. 在按钮上单击我要突出显示父级和子级选项卡的特定选项卡,但我无法做到这一点。

So my parent tab will always be master1 and master2, its just the child tabs of these tabs would keep on changing and their name is not constant. 因此,我的父选项卡将始终为master1和master2,仅这些选项卡的子选项卡将不断更改,并且它们的名称不是恒定的。

For setting my parent tab active I tried adding active=true as below but it did not work: 为了将父选项卡设置为活动状态,我尝试添加如下所示的active = true,但它不起作用:

I also tried setting this in my controller as: 我也尝试在控制器中将此设置为:

 $scope.tabsData.master2.active = true;

Not sure whats the correct way to do this. 不确定执行此操作的正确方法是什么。 Secondly I am not even sure as how to proceed making my child tabs active. 其次,我什至不知道如何继续激活我的子标签。

Anyone for inputs please. 任何人请输入。

Here is the jsfiddle I created to demo: 这是我创建的要演示的jsfiddle:

  https://jsfiddle.net/hubod4a2/2/

Anyone? 任何人?

I tweaked your JSON so it is easier to work with 我调整了JSON,以便更轻松地使用

$scope.tabsData = [{
    name: "master1",
    tabs: [{
        name: "master1-child1",
        content: "master1-child1-content"
      },
      {
        name: "master1-child2",
        content: "master1-child2-content"
      }
    ]
  }, {
    name: "master2",
    tabs: [{
        name: "master2-child1",
        content: "master2-child1-content"
      },
      {
        name: "master2-child2",
        content: "master2-child2-content"
      }
    ]
  }]

And, adjusted your tabset as follows. 并且,如下调整标签集。 As you can see if you have a well structured JSON object, it is much easier to use it with ng-repeat. 如您所见,如果您具有结构良好的JSON对象,则将它与ng-repeat一起使用会容易得多。

<div ng-app="tabs" ng-controller="tabController">

  <tabset class="tabbable-line">
    <tab ng-repeat="tab in tabsData" heading="{{tab.name}}">
      <tabset class="tabbable-line">
        <tab class="tabbable-line" ng-repeat="ctab in tab.tabs" heading="{{ctab.name}}">
          {{ctab.content}}
        </tab>
      </tabset>
    </tab>
  </tabset>
  <button type="submit" class="btn btn-primary" ng-click="setData()">Submit</button>
</div>

I hope this make sense. 我希望这是有道理的。 Cheers 干杯

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM