【发布时间】:2016-01-30 11:02:52
【问题描述】:
Routes 是我在 AngularJs 中使用的,通过 ajax 调用异步加载动态内容。我就是这样做的:
var $app = angular.module('app', ['ngRoute']);
$app.config(["$routeProvider", "$locationProvider", function ($routeProvider, $locationProvider) {
$routeProvider
.when("/pop", {controller: "popCtrl", templateUrl: "partials/pop_test.html"})
.when("/dashboard", {controller: "dashBoardCtrl", templateUrl: "partials/dashboard.html"})
.otherwise({redirectTo: "/"})
$locationProvider.html5Mode(true);
}])
我还设置了一个迷你导航,这样当我点击我的链接时,它会通过 templatrUrl 参数
加载这些部分 <ul>
<li><a href="/">Home</a></li>
<li><a href="/pop">Pop</a></li>
<li><a href="/dashboard">Dashboard</a></li>
</ul>
这一切都很好,当我点击我的链接时,它会加载我在 pop_test.html 和 dashboard.html
中设置的内容现在我遇到的问题。
当你点击链接让我们说仪表板时,内容通过 ng-view 加载得很好,并且如果用户 重新加载或刷新页面,路由工作得很好并且您可以说 localhost/dashboard 它实际上会尝试转到该链接并找到一个以 / 之后的任何内容命名的文件,在这种情况下是名为仪表板的目录。
那么我该如何做到这一点,当用户刷新或重新加载页面时,他实际上并没有重新加载 /dashboard 页面,因此没有找到服务器错误页面。
【问题讨论】:
-
如果您使用的是
html5 mode,那么您需要为刷新/初始加载进行服务器配置。每次用户刷新/重新加载页面时都不可能不调用服务器。 -
我不明白,当用户点击刷新时你不想刷新页面?为什么刷新与常规页面条目不同?您是否传递了一些您丢失的数据?
-
@Alberto I.N.J 你对服务器配置是什么意思?
-
@ Jony-Y 因为 URL 只是看起来改变了,但实际上并没有去任何地方,所以其他页面上的内容是通过 Ajax 在同一页面上加载的。因此,因为在加载部分加载时路由会使 URL 看起来像“localhost/dashboard”,如果您点击刷新,它实际上会尝试找到该目录中不存在的dashboard.html。仅在我从中加载部分 html 的部分文件夹中。
-
没有让你感到抱歉,如果 url 改变了,那么你的控制器就会被调用,因为它连接到那个路由并且 html 被渲染了......你的意思是什么,只是看起来它改变了?你能提供一个plunker吗?
标签: javascript html ajax angularjs