如何从控制器访问 angular bootstrap UI
How to access angular bootstrap UI from controller
我正在尝试使用 angularJS bootstrap 标签集,在我的要求中,我需要添加一个下一步按钮让客户切换标签。
这是我的代码:
<div ng-controller='ctr'>
<tabset>
<tab active='sqTab' heading="tab1">
tabt 1
</tab>
<tab active='psTab' heading="tab2">
tabt 2
</tab>
</tabset>
<button click='next()')>next</button>
</div>
在控制器中"ctr":
$scope.sqTab = true;
$scope.psTab = false;
$scope.next = function(){
$scope.sqTab = false;
$scope.psTab = true;
}
如你所见,我为每个标签都设置了激活,页面加载时它工作正常,我可以在点击下一步后切换到标签2,但是如果我点击标签头切换回来,并尝试点击下一步再次按钮,它没有用,这可能是指令是隔离范围的原因,我无法访问它是活动的,但如果是这样,为什么我可以第一次切换?有什么办法可以做到吗?
您没有使用 AngularJS-UI bootstrap 指令。这是一个基于您所拥有的工作示例。
Javascript
angular.module('app', ['ui.bootstrap'])
.controller('ctrl', function($scope) {
$scope.activeTab = "sqTab";
$scope.next = function() {
$scope.activeTab = "psTab";
}
});
HTML
<div ng-app="app" ng-controller="ctrl">
<form class="tab-form-demo">
<uib-tabset active="activeTab">
<uib-tab index="'sqTab'" heading="tab1">
Here is some content on Tab 1
</uib-tab>
<uib-tab index="'psTab'" heading="tab2">
Here is some different content on Tab 2
</uib-tab>
</uib-tabset>
<button ng-click="next()">next</button>
</form>
</div>
请注意,在使用字符串索引时,您必须在其两边加上引号。另请注意,需要使用所有 bootstrap 元素的 uib-
版本。这是使用上述代码的工作 JSFiddle。
使用范围变量来枚举选项卡索引以及下一个或上一个按钮。
HTML
<button ng-click="previous()" ng-disabled="activeTab===0">Previous</button>
<button ng-click="next()" ng-disabled="activeTab===1">Next</button>
<div>
<uib-tabset active="activeTab">
<uib-tab index="0" heading="Tab 0">
<div>This is tab 0</div>
</uib-tab>
<uib-tab index="1" heading="Tab 1">
<div>This is tab 1</div>
</uib-tab>
</uib-tabset>
</div>
控制器
$scope.activeTab = 0;
$scope.next = function() {
$scope.activeTab += 1;
};
$scope.previous = function() {
$scope.activeTab -= 1;
};
这是一个有效的 plunk。
我正在尝试使用 angularJS bootstrap 标签集,在我的要求中,我需要添加一个下一步按钮让客户切换标签。 这是我的代码:
<div ng-controller='ctr'>
<tabset>
<tab active='sqTab' heading="tab1">
tabt 1
</tab>
<tab active='psTab' heading="tab2">
tabt 2
</tab>
</tabset>
<button click='next()')>next</button>
</div>
在控制器中"ctr":
$scope.sqTab = true;
$scope.psTab = false;
$scope.next = function(){
$scope.sqTab = false;
$scope.psTab = true;
}
如你所见,我为每个标签都设置了激活,页面加载时它工作正常,我可以在点击下一步后切换到标签2,但是如果我点击标签头切换回来,并尝试点击下一步再次按钮,它没有用,这可能是指令是隔离范围的原因,我无法访问它是活动的,但如果是这样,为什么我可以第一次切换?有什么办法可以做到吗?
您没有使用 AngularJS-UI bootstrap 指令。这是一个基于您所拥有的工作示例。
Javascript
angular.module('app', ['ui.bootstrap'])
.controller('ctrl', function($scope) {
$scope.activeTab = "sqTab";
$scope.next = function() {
$scope.activeTab = "psTab";
}
});
HTML
<div ng-app="app" ng-controller="ctrl">
<form class="tab-form-demo">
<uib-tabset active="activeTab">
<uib-tab index="'sqTab'" heading="tab1">
Here is some content on Tab 1
</uib-tab>
<uib-tab index="'psTab'" heading="tab2">
Here is some different content on Tab 2
</uib-tab>
</uib-tabset>
<button ng-click="next()">next</button>
</form>
</div>
请注意,在使用字符串索引时,您必须在其两边加上引号。另请注意,需要使用所有 bootstrap 元素的 uib-
版本。这是使用上述代码的工作 JSFiddle。
使用范围变量来枚举选项卡索引以及下一个或上一个按钮。
HTML
<button ng-click="previous()" ng-disabled="activeTab===0">Previous</button>
<button ng-click="next()" ng-disabled="activeTab===1">Next</button>
<div>
<uib-tabset active="activeTab">
<uib-tab index="0" heading="Tab 0">
<div>This is tab 0</div>
</uib-tab>
<uib-tab index="1" heading="Tab 1">
<div>This is tab 1</div>
</uib-tab>
</uib-tabset>
</div>
控制器
$scope.activeTab = 0;
$scope.next = function() {
$scope.activeTab += 1;
};
$scope.previous = function() {
$scope.activeTab -= 1;
};
这是一个有效的 plunk。