1

ui-tab在我的angular应用程序中使用。我有 2 个选项卡(tab1 和 tab2),当 tab2 中有一个按钮时,我想以编程方式将 tab1 设置为活动选项卡。

这是我的html代码:

      <uib-tabset active="active"  justified="true">
        <uib-tab id="tab1" index="0" heading="Tab 1" ng-click="active= 0">
    <!-- content1 -->
        </uib-tab>
     <uib-tab id="tab2" index="1" heading="Tab 2" ng-click="active= 1">
    <!-- content2 -->
<button ng-click="goToTab1()"> Go to tab 1</button>
    </uib-tab>
  </uib-tabset>

这是goToTab1()实现:

$scope.goToTab1 = function() {
            angular.element(document.querySelector("#tab1")).removeClass("active");
            angular.element(document.querySelector("#tab2")).addClass("active");
}

我的问题:

当我单击按钮(在 tab2 中)时,选择了 tab1,但显示的内容仍然是 tab2 内容。同样,当我点击tab2之后,什么也没有发生,直到我再点击tab1,然后如果我点击tab2,它就可以工作了。

编辑

我已经尝试过该问题的解决方案,但我遇到了同样的问题。另外,当我直接在 中更改活动值时ng-click,它根本没有效果

<button ng-click="active = 0"> Go to tab 1</button>
4

2 回答 2

0
<uib-tabset active="current"  justified="true">
  <uib-tab id="tab1" index="0" heading="Tab 1" ng-click="current = 0">
    <!-- content1 -->
  </uib-tab>
  <uib-tab id="tab2" index="1" heading="Tab 2" ng-click="current = 1">
    <!-- content2 -->
    <button ng-click="goToTab1()"> Go to tab 1</button>
  </uib-tab>
</uib-tabset>
$scope.goToTab1 = function() {
  $scope.current = 0;
};
于 2017-05-31T11:21:27.543 回答
0

根据这个问题,你应该重构

<button ng-click="active = 0"> Go to tab 1</button>

<button ng-click="$parent.$parent.active = 0"> Go to tab 1</button>

我认为更好的方法是使用具有自己范围的视图/指令并根据active

于 2017-05-31T11:56:25.923 回答