好的。我有一个 url 设置来注销用户。在服务器上,没有html。服务器上的会话会被破坏,然后用户会被重定向到一个地址。
这对于纯 html 来说效果很好,但是对于 Angular 我遇到了问题。我一直在使用所有主要路线$routeProvider.when('/foo', {templateUrl: '/foo.html', controller: 'Ctrl'})
这对于正常的模板化路线来说效果很好。但是,如果没有模板,它将无法工作。
那么,我如何支持该路线/logout
与上面相同的方式,当没有 html 模板时?
解决方法是使用template
代替templateUrl
。来自角度文档 https://docs.angularjs.org/api/ngRoute/provider/%24routeProvider:
template – {string=} – html 模板作为应该使用的字符串
通过 ngView 或 ngInclude 指令。该属性优先于
模板网址。
可以按如下方式使用:
$routeProvider.when("/foo", {template: " ", controller: "Ctrl"});
注意:您必须使用" "
而不是空字符串""
因为 Angular 使用if (template)
在触发控制器之前进行检查,空字符串的计算结果为 false。
- 编辑 -
更好的方法是使用resolve
地图。请参阅角度文档 https://docs.angularjs.org/api/ngRoute/provider/%24routeProvider:
解析 - {Object.=} - 可选的映射
应该注入到控制器中的依赖项。
可以这样使用:
$routeProvider.when('/foo', {resolve: {redirect: 'RedirectService'}});
注意:我已将其从“Ctrl”更改为“RedirectService”,因为您在问题中描述的内容实际上并不是角度意义上的“控制器”。它不设置视图的范围。相反,它更像是一项服务,最终会进行重定向。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)