如何在没有 templateUrl 的情况下进行路由?

2024-01-24

好的。我有一个 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(使用前将#替换为@)

如何在没有 templateUrl 的情况下进行路由? 的相关文章

随机推荐