angular ui bootstrap选项卡组件:当标签处于活动状态时如何获取选项卡的内容
angular ui bootstrap tabs component: how to get the content of a tab when the tab is active not clicked
我在我的 angularjs 项目中使用 ui bootstrap 'tabs' 组件。它在名为 tab.html 的文件中定义。定义代码如下:
<uib-tabset class="product-tab-bar">
<uib-tab ng-repeat="tab in tabs" active="tab.active" ui-sref="{{tab.action}}" disable="tab.disabled" class="product-tab">
<uib-tab-heading>
<span class="{{tab.icon}}"></span> {{tab.title}}
</uib-tab-heading>
<div ui-view></div>
</uib-tab>
</uib-tabset>
选项卡定义在控制器中,它们是:
.controller('myController', function () {
$scope.tabs = [
{title: "tab1", action:".tab1" , icon: "icon-tab1", active: false},
{title: "tab2", action:".tab2" , icon: "icon-tab2", active: true},
{title: "tab3", action:".tab3" , icon: "icon-tab3", active: false}
]
});
状态定义是:
.state('tab', {
url: '/tab',
templateUrl: 'tab.html'
})
.state('tab.tab1', {
url: '/tab1',
templateUrl: 'tab1.html',
})
.state('tab.tab2', {
url: '/tab2',
templateUrl: 'tab2.html',
})
.state('tab.tab3', {
url: '/tab3',
templateUrl: 'tab3.html',
})
当您单击选项卡时,状态将发生变化。
现在我的问题是,当我第一次加载 tab.html 时,选项卡 'tab2' 被激活,但没有加载 tab2 的内容
您可以看到如下:
我需要点击'tab2',状态会改变,内容会加载
您可以看到如下:
那么有什么方法可以让我在第一次加载tab.html的时候,加载'tab2'的内容或者如何激活[的状态=47=] ?
那是因为你只在点击时改变状态
(ui-sref="...")
所以在第一次选项卡处于活动状态时,ui-视图不会改变。
例如,一个 quick 解决方案是在第一次加载时 $state.go 到活动选项卡。
使用 $state.go('the-state-name-in-quotes') 方法触发适当的状态和加载内容。在您的控制器中添加此方法。
下面的文档有更多详细信息
https://github.com/angular-ui/ui-router/wiki/Quick-Reference#stategoto--toparams--options
您实际上必须导航到该州。
var activeTab;
for(var i = 0; i < $scope.tabs.length; i++) {
if($scope.tabs[i].active) {
activeTab = $scope.tabs[i];
break;
}
}
if(activeTab) {
$state.go(activeTab.action);
}
JSFiddle 可用 here。
我在我的 angularjs 项目中使用 ui bootstrap 'tabs' 组件。它在名为 tab.html 的文件中定义。定义代码如下:
<uib-tabset class="product-tab-bar">
<uib-tab ng-repeat="tab in tabs" active="tab.active" ui-sref="{{tab.action}}" disable="tab.disabled" class="product-tab">
<uib-tab-heading>
<span class="{{tab.icon}}"></span> {{tab.title}}
</uib-tab-heading>
<div ui-view></div>
</uib-tab>
</uib-tabset>
选项卡定义在控制器中,它们是:
.controller('myController', function () {
$scope.tabs = [
{title: "tab1", action:".tab1" , icon: "icon-tab1", active: false},
{title: "tab2", action:".tab2" , icon: "icon-tab2", active: true},
{title: "tab3", action:".tab3" , icon: "icon-tab3", active: false}
]
});
状态定义是:
.state('tab', {
url: '/tab',
templateUrl: 'tab.html'
})
.state('tab.tab1', {
url: '/tab1',
templateUrl: 'tab1.html',
})
.state('tab.tab2', {
url: '/tab2',
templateUrl: 'tab2.html',
})
.state('tab.tab3', {
url: '/tab3',
templateUrl: 'tab3.html',
})
当您单击选项卡时,状态将发生变化。 现在我的问题是,当我第一次加载 tab.html 时,选项卡 'tab2' 被激活,但没有加载 tab2 的内容
您可以看到如下:
我需要点击'tab2',状态会改变,内容会加载
您可以看到如下:
那么有什么方法可以让我在第一次加载tab.html的时候,加载'tab2'的内容或者如何激活[的状态=47=] ?
那是因为你只在点击时改变状态 (ui-sref="...")
所以在第一次选项卡处于活动状态时,ui-视图不会改变。
例如,一个 quick 解决方案是在第一次加载时 $state.go 到活动选项卡。
使用 $state.go('the-state-name-in-quotes') 方法触发适当的状态和加载内容。在您的控制器中添加此方法。
下面的文档有更多详细信息
https://github.com/angular-ui/ui-router/wiki/Quick-Reference#stategoto--toparams--options
您实际上必须导航到该州。
var activeTab;
for(var i = 0; i < $scope.tabs.length; i++) {
if($scope.tabs[i].active) {
activeTab = $scope.tabs[i];
break;
}
}
if(activeTab) {
$state.go(activeTab.action);
}
JSFiddle 可用 here。