簡體   English   中英

如何使用$ urlRouterProvider.rule

[英]How to use $urlRouterProvider.rule

好的,這可能是UI-Router的錯誤,或者僅僅是我的錯。 我在Git上發布了一個問題https://github.com/angular-ui/ui-router/issues/2342 ,目前還沒有答復,非常適合有人在這里提供幫助

如果我做這樣的事情:

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 ,只有空白頁,沒有state2.html任何錯誤

非常感謝您提供任何可能的解決方案。

.rule視為AOP過濾器。 這只是一個方面

  • 總是執行,網址更改時,
  • 並可以調整該網址。

與之相比,它被視為“最后一個URL解析處理程序”。

因此,如文檔中所述,最好的用法是引入不區分大小寫的url支持:

規則(規則)

定義$ urlRouterProvider使用的規則來查找特定URL的匹配項。

  • rule object Handler函數,以$ 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; } }); }); 

上面有一個例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM