Javascript 如何使用$urlRouterProvider.rule
好吧,这可能是UI路由器的错误,也可能是我的错。我在Git上发布了一个问题,还没有回复,如果有人能在这里提供帮助,我将不胜感激 如果我做了以下事情:Javascript 如何使用$urlRouterProvider.rule,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,好吧,这可能是UI路由器的错误,也可能是我的错。我在Git上发布了一个问题,还没有回复,如果有人能在这里提供帮助,我将不胜感激 如果我做了以下事情: angular.module('myapp', [ 'ui.router' ]) .config(function($stateProvider, $urlRouterProvider){ $urlRouterProvider.otherwise("/state1"); $urlRouterProvid
angular.module('myapp', [ 'ui.router' ])
.config(function($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise("/state1");
$urlRouterProvider.rule(function ($injector, $location) {
return "/state2";
});
$stateProvider
.state('state1', {
url: "/state1",
views: {
"mainview": { template: "state1.html" }
}
})
.state('state2', {
url: "/state2",
views: {
"mainview": { template: "state2.html" }
}
});
})
.controller('AppCtrl', AppCtrl);
function AppCtrl(){
}
地址栏已更改,但未加载state2.html
,只有一个空白页,不会引发任何错误
非常感谢您提供任何可能的解决方案 将
.rule
视为AOP过滤器。这只是一个方面
- 当url更改时,始终执行
- 并可以调整该url李>
规则
处理程序函数,以$injector和$location服务作为参数。您可以使用它们返回有效的 路径作为字符串对象
var app = angular.module('app', ['ui.router.router']);
app.config(function ($urlRouterProvider) {
// Here's an example of how you might allow case insensitive urls
$urlRouterProvider.rule(function ($injector, $location) {
var path = $location.path(),
normalized = path.toLowerCase();
if (path !== normalized) {
return normalized;
}
});
});
有一个可以请您将
main视图
更改为您的$stateProvider
作为state1
和state2
。这可能会对您有所帮助…嗨,Sakthi,谢谢您的回答。很抱歉,我听不懂您的,您能解释一下将mainview更改为$stateProvider的确切含义吗?比如有一个代码示例?谢谢你的回答。根据我的理解,只要回调函数返回有效的url路径,就应该加载与路径相关联的状态,如doc中所述。由于它是为客户url处理程序而设计的,我同意,正如您所建议的,它可以用于不区分大小写的url支持,但仅用于此目的,它可以是函数中的任何内容。