如何在不注入$ routeParams或$ location的情况下获取routeParams,路径和搜索的值?

时间:2015-03-20 14:35:38

标签: angularjs angularjs-routing

请参阅下面的示例代码:

var app = angular.module("sampleroute", ["ngRoute"]);    
app.config(function ($routeProvider) {
    $routeProvider
        .when("/", {
            templateUrl: "main.htm",
            controller: "mainCtrl"
        })
        .when("/page/:type", {
            redirectTo: function (routeParams, path, search) {
                console.log(routeParams);
                console.log(path);
                console.log(search);
                return "/";
            }
        })
        .otherwise({
            redirectTo:"/"
        });
    //console.log(routeParams, path, search);
});

以下代码在路由到“/ page / types?test = testValue”时为routeParams,路径和搜索打印出3个值。所以这没有任何问题。

我的问题是没有注入$routeParams,我得到了routeParams的价值而没有注入$location我得到了pathsearch的价值。

这是怎么回事?

1 个答案:

答案 0 :(得分:1)

看一下角度文档,它说明:

  

如果redirectTo是一个函数,将使用以下函数调用它   参数:

     

{Object。} - 从当前提取的路由参数   $ location.path()通过应用当前路由templateUrl。

     

{string} -current $ location.path()

     

{Object} - 当前$ location.search()

Angular正在幕后为您做这件事。这就是为什么你不需要直接注入$ location或$ routeParams。

以下是文档的链接:https://docs.angularjs.org/api/ngRoute/provider/$routeProvider