否则,在StateProvider上
使用angular-ui-router,我怎样才能使用$ stateProvider的其他方法 ,或者我怎样才能使用它呢?
你不能只使用$stateProvider
。
您需要注入$urlRouterProvider
并创build一个类似于以下内容的代码:
$urlRouterProvider.otherwise('/otherwise');
必须像往常一样在/otherwise
定义状态:
$stateProvider .state("otherwise", { url : '/otherwise'...})
看到这个链接ksperling解释
你可以用$stateProvider
使用catch全部语法 ( "*path"
)。 您只需在列表底部添加一个状态configuration,如下所示:
$stateProvider.state("otherwise", { url: "*path", templateUrl: "views/error-not-found.html" });
所有的选项都在https://github.com/angular-ui/ui-router/wiki/URL-Routing#regex-parameters中解释。;
与$urlRouterProvider.otherwise(...)
相反,这个选项的$urlRouterProvider.otherwise(...)
在于你不需要改变位置。
您也可以手动将$ state注入到其他函数中,然后您可以导航到非url状态。 这有利于浏览器不更改地址栏,这有助于处理回到上一页。
$urlRouterProvider.otherwise(function ($injector, $location) { var $state = $injector.get('$state'); $state.go('defaultLayout.error', { title: "Page not found", message: 'Could not find a state associated with url "'+$location.$$url+'"' }); });
好吧,当你意识到你提出的问题已经在示例代码的第一行中得到了回答的时候,这个愚蠢的时刻! 只要看看示例代码。
angular.module('sample', ['ui.compat']) .config( [ '$stateProvider', '$routeProvider', '$urlRouterProvider', function ($stateProvider, $routeProvider, $urlRouterProvider) { $urlRouterProvider .when('/c?id', '/contacts/:id') .otherwise('/'); // <-- This is what I was looking for ! ....
看看这里。
接受的答案参考angular-route
询问有关ui-router
。 接受的答案使用“monolithic” $routeProvider
,它需要ngRoute
模块(而ui-router
需要ui.router
模块)
最高评分的答案使用$stateProvider
来代替,并说类似.state("otherwise", { url : '/otherwise'... })
,但我找不到任何提及“否则” 链接 。 但是,我看到$stateProvider
在这个答案中提到它说:
你不能只使用
$stateProvider
。 你需要注入$urlRouterProvider
这就是我的答案可以帮助你的地方。 对我来说,就像这样使用$urlRouterProvider
就足够了:
my_module .config([ , '$urlRouterProvider' , function( , $urlRouterProvider){ //When the url is empty; ie what I consider to be "the default" //Then send the user to whatever state is served at the URL '/starting' //(It could say '/default' or any other path you want) $urlRouterProvider .when('', '/starting'); //... }]);
我的build议与ui-router
文档 ( 这个特定的修订版 )是一致的,它包含了类似的用法。 when(...)
方法(第一次调用函数):
app.config(function($urlRouterProvider){ // when there is an empty route, redirect to /index $urlRouterProvider.when('', '/index'); // You can also use regex for the match parameter $urlRouterProvider.when(/aspx/i, '/index'); })