【发布时间】:2017-11-20 16:45:23
【问题描述】:
我正在使用 Angularjs ngRoute for SPA 与 Node.js 作为我的后端,我的网站中有 3 个页面说:
localhost:8000/#!/localhost:8000/#!/redlocalhost:8000/#!/green
通过谷歌搜索,我找到了摆脱 /**#!**/ 的方法,并且只有当用户无意按 F5 重新加载页面时它才能正常工作。如果重新加载,我的页面结构会变得更糟。我的意思是,如果用户在red.html 页面中按 F5,则单独显示 red.html 而不是在 ng-View 中注入 red.html 内容这就是 nodejs 的本质获取请求。有什么办法可以摆脱这个问题?
index.html
<body ng-app="myApp">
<p><a href="/">Main</a></p>
<a href="/red">Red</a>
<a href="/green">Green</a>
<ng-view></ng-view>
<script>
var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider, $locationProvider) {
$routeProvider
.when("/", {
templateUrl: "/main"
})
.when("/red", {
templateUrl: "/red"
})
.when("/green", {
templateUrl: "/green"
})
$locationProvider.html5Mode(true);
});
</script>
</body>
【问题讨论】:
-
在哪里注入 HTML 内容?
red.html应该被加载到ng-view里面有什么问题那么缺少什么? -
如果重新加载 red.html 没有在 ng-view 中注入。而是单独显示(只显示red.htm,没有html标签,head标签等)
-
如果你重新加载这个 URL
localhost:8000/red你配置的路由.when("/red", ...应该被加载。 URL 中不应有.html之类的后缀。有什么问题? -
这并不是您问题的真正答案,但恕我直言,不要使用 ngRoute。请改用 ui-router (github.com/angular-ui/ui-router)。
-
当您使用
html5mode时,您必须配置服务器以考虑虚拟目录。不要使用与页面路径相同的模板路径,否则服务器无法区分
标签: javascript html angularjs node.js ngroute