我正在使用Ionic和Angular 1(使用ui-router)。我们说我有两个标签:
+----+ +-------+
|HOME| |PROFILE|
+----+ +-------+
这是重要的部分:HOME
标签中的链接到/profile
... 但是,我不希望它自动切换到单击该链接时PROFILE
选项卡...我想继续使用 HOME
选项卡中的导航堆栈。
使用ui-router有多个嵌套状态的常用方法是like this(这个例子有些不必要的东西被故意省略):
$stateProvider
.state('app', {
abstract: true,
template: require('templates/app.html'),
})
.state('app.home', {
template: require('templates/home.html'),
url: '/home',
controller: 'HomeCtrl',
views: {
// a bunch of child views that can only belong to this state
}
})
.state('app.profile', {
template: require('templates/profile.html'),
url: '/profile',
controller: 'ProfileCtrl',
views: {
// a bunch of child views that can only belong to this state
}
});
但是,如果我想导航到 app.profile
内的app.home
,而不是被迫更改标签,该怎么办?
一个选项是使我的所有选项卡都是抽象的,然后为每个可能的状态(使用循环)声明<tab>.<state>
,但这似乎需要很多可能不必要的开销:
var abstractStates = [
{
name: 'home',
url: '/home',
controller: 'HomeCtrl',
template: require('templates/home.html')
},
{
name: 'profile',
url: '/profile',
controller: 'ProfileCtrl',
template: require('templates/profile.html')
}
];
abstractStates.forEach(function(state) {
$stateProvider.state(state.name, _.omit(state, ['name']);
abstractStates.forEach(function(nestedState) {
$stateProvider.state([state.name, nestedState.name].join('.'), _.omit(nestedStates, ['abstract', 'name']));
});
});
有没有更好的方法来实现这一目标?