【发布时间】:2015-05-20 17:12:59
【问题描述】:
更新:在 Angular Material 0.10.0 中修复了
ui-sref和md-tabs的使用
首先,我们知道有几个与此类似的问题。 但是,我们已经尝试了几个小时,但仍然没有运气,所以让我们看看是否有人可以对这个特殊情况有所了解。
我们试图有两个选项卡,两个不同的视图和两个不同的控制器。
标签呈现正常,它们工作,并且标签更改时 URL 更改,但标签“正文”从未加载。
ui-sref 被定义在一个 span 中以避免https://github.com/angular/material/issues/2344
模块配置
function testRouteConfig($stateProvider) {
$stateProvider
.state('testTabs', {
abstract: true,
url: '/test/tabs',
templateUrl: 'modules/test/test.html',
controller: 'TestController as vm'
})
.state('testTabs.testMain', {
url: '/test/main',
data: {
'selectedTab': 0
},
views: {
'testMain': {
templateUrl: 'modules/test/main/mainTest.html',
controller: 'MainTestController as vm'
}
}
})
.state('testTabs.testAbout', {
url: '/test/about',
data: {
'selectedTab': 1
},
views: {
'testAbout': {
templateUrl: 'modules/test/about/aboutTest.html',
controller: 'AboutTestController as vm'
}
}
});
}
选项卡定义 (test.html)
<md-tabs md-selected="currentTab" md-stretch-tabs="always" class="main-toolbar">
<md-tab>
<md-tab-label><span ui-sref="testTabs.testMain">Profile</span></md-tab-label>
<md-tab-body ui-view="testMain" layout="vertical" layout-fill></md-tab-body>
</md-tab>
<md-tab>
<md-tab-label><span ui-sref="testTabs.testAbout">About</span></md-tab-label>
<md-tab-body ui-view="testAbout" layout="vertical" layout-fill></md-tab-body>
</md-tab>
</md-tabs>
主控制器
'use strict';
TestController.$inject = ['$scope'];
function TestController($scope) {
$scope.$on('$stateChangeSuccess', function (event, toState) {
$scope.currentTab = toState.data.selectedTab;
});
}
module.exports = TestController;
标签正文示例
<p>{{vm.title}}</p>
标签控制器示例
'use strict';
AboutTestController.$inject = [];
function AboutTestController() {
var vm = this;
vm.title = 'About Test page';
}
module.exports = AboutTestController;
【问题讨论】:
标签: angularjs tabs angular-ui-router angular-material