我有以下路线定义:
..........
when('/:templateFile',
{
templateUrl: function (param) { return 'views/' + param.templateFile + '.html' }
})
..........
下一段代码监听路径正在改变。如果用户未经过身份验证,并且他要导航的下一页/模板不是登录页面,则会将用户重定向到登录页面。
一切正常,但next.templateUrl
值实际上是function (param) { return 'views/' + param.templateFile + '.html'
而不是views/login.html
,例如。
alert(next.templateUrl)将显示function (param) { return 'views/' + param.templateFile + '.html'
。
app.run(function ($rootScope, $location) {
$rootScope.$on("$routeChangeStart", function (event, next, current) {
if (!$rootScope.IsAuth) {
alert(next.templateUrl); // problem
if (next.templateUrl === "views/login.html") {
} else {
$location.path("/login");
}
}
});
});
在使用动态模板时,如何获得下一个模板的任何想法?
答案 0 :(得分:1)
因为templateUrl
确实是一个函数,所以你可以尝试将它用作函数。如果使用路由参数调用它,则应返回模板URL:
app.run(function ($rootScope, $location) {
$rootScope.$on("$routeChangeStart", function (event, next, current) {
if (!$rootScope.IsAuth) {
var templateUrl = next.templateUrl(next.params);
if (templateUrl === "views/login.html") {
// ...
}
else {
$location.path("/login");
}
}
});
});