Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用$urlRouterProvider.rule_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript 如何使用$urlRouterProvider.rule

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

好吧,这可能是UI路由器的错误,也可能是我的错。我在Git上发布了一个问题,还没有回复,如果有人能在这里提供帮助,我将不胜感激

如果我做了以下事情:

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
与之相比,它被视为“最后一个url解析处理程序”

因此,如文档中所述,最佳用途是引入不区分大小写的url支持:

定义$urlRouterProvider用于查找的匹配项的规则 特定的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支持,但仅用于此目的,它可以是函数中的任何内容。