在ui-router中设置抽象嵌套状态的默认子节点
Set default child of abstract nested state in ui-router
我用ui-router
。
以下是我的嵌套状态:
$stateProvider
.state('books', {
abstract: true,
url: '/books',
controller: 'BooksCtrl',
templateUrl: 'contents/books.html'
})
.state('books.top', {
url: '/top',
templateUrl: 'contents/books-top.html'
})
.state('books.new', {
url: '/new',
templateUrl: 'contents/books-new.html'
});
我如何将books.new
状态设置为books
抽象状态的默认子状态,所以当你击中/books
ui-router重定向到/books/new
?
有一个工作示例
我们可以使用内置的特性。1)默认是这样的子状态,它具有空url:
$stateProvider
.state('books', {
abstract: true,
url: '/books/new',
controller: 'BooksCtrl',
..
})
.state('books.new', {
//url: '/new',
url: '',
...
})
.state('books.top', {
url: '^/books/top',
...
});
和2)保持/books
的位置,我们可以使用重定向
$urlRouterProvider.when('/books', '/books/new');
这些链接将按预期工作:
// href
<a href="#/books">
<a href="#/books/new">
<a href="#/books/top">
//ui-sref
<a ui-sref="books.top">
<a ui-sref="books.new">
点击这里
试试:
$stateProvider
.state('books', {
abstract: true,
url: '/books',
controller: 'BooksCtrl',
templateUrl: 'contents/books.html'
})
.state('books.top', {
url: '/top',
templateUrl: 'contents/books-top.html'
})
.state('books.new', {
url: '',
templateUrl: 'contents/books-new.html'
});
EDIT:我知道这不是很好,但是你可以用相同的参数创建额外的状态,除了url:
var booksArgs = {
url: '',
templateUrl: 'contents/books-new.html'
};
$stateProvider.state('books.new', booksArgs);
$stateProvider.state('books.new_', angular.extend({}, booksArgs, {
url: '/new'
}));
另一个解决方案从这个帖子:
In states配置:
$stateProvider
.state('books', {
url: '/books',
controller: 'BooksCtrl',
templateUrl: 'contents/books.html',
redirectTo: '.new'
})
.state('books.top', {
url: '/top',
templateUrl: 'contents/books-top.html'
})
.state('books.new', {
url: '/new',
templateUrl: 'contents/books-new.html'
});
模块运行:
app.run(['$rootScope', '$state', function($rootScope, $state) {
$rootScope.$on('$stateChangeStart', function(evt, to, params) {
if (to.redirectTo) {
evt.preventDefault();
$state.go(to.redirectTo, params, { relative: to });
}
});
}]);
相关文章:
- 使用AngularJS中的UI路由器将状态重定向到默认子状态
- AngularJS UI路由器未进入默认状态
- AngularJS-检测到n分钟内没有任何操作并进入默认状态
- 使用 ui 路由器导航到非默认状态
- 使index.html的默认状态不带#something
- 将javascript(jQuery)对象属性返回到默认状态
- 如何在 ThreeJS 中应用矩阵转换并将结果设置为默认状态
- 按钮保持切换状态,防止默认
- Highcharts 图形默认系列填充颜色覆盖状态填充颜色(包括 jsfiddle)
- 如何使用 ui-router 将子项或孙项状态设置为默认索引状态
- 如何使JavaScript图像在手机上默认为悬停状态
- 如何确保链接'的默认操作始终处于禁用状态
- 禁用提交按钮作为默认状态,直到所有输入都填写在angular js中
- 在ui-router中设置抽象嵌套状态的默认子节点
- Angular JS Ng-switch默认状态
- 如何设置输入默认值与状态,也手动更新输入
- 需要帮助更改页面加载时的默认js切换状态
- 默认情况下,今天的日期在daterangepicker中处于活动状态
- 将Angular应用程序刷新到默认状态
- 用ui-router重定向到AngularJS中的默认嵌套状态