请参阅下面的示例代码:
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
我得到了path
和search
的价值。
这是怎么回事?
答案 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