angular-ui-tabset: изменить содержимое активной вкладки
Я использую ui-tab
в моем angular
приложение. У меня есть 2 вкладки (tab1 и tab2), и я хочу, чтобы кнопка tab1 была активна программно, когда кнопка на вкладке 2.
Это мой 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");
}
Моя проблема:
Когда я нажимаю кнопку (на вкладке 2), выбирается вкладка 1, но отображаемое содержимое остается содержимым вкладки 2. Также, когда после этого я нажимаю на tab2, ничего не происходит, пока я не нажму на tab1 еще раз, тогда, если я нажму на tab2, это будет работать.
редактировать
Я уже пробовал решение этой проблемы, но у меня та же проблема. Также, когда я изменяю активное значение прямо в ng-click
, это никак не влияет
<button ng-click="active = 0"> Go to tab 1</button>
2 ответа
<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;
};
Согласно этому вопросу, вы должны рефакторинг
<button ng-click="active = 0"> Go to tab 1</button>
к
<button ng-click="$parent.$parent.active = 0"> Go to tab 1</button>
Я думаю, что лучше было бы использовать используемые представления / директивы со своими собственными областями и скрывать / показывать их в соответствии с active