【发布时间】:2012-11-29 15:47:21
【问题描述】:
我在 spa 模板 (c#, mvc 4) 中使用 sammy 脚本。 默认链接如下:/#/home、/#/contacts、/#/faq 等。 如何仅在 /home、/contacts、/faq 上更改它们?
【问题讨论】:
我在 spa 模板 (c#, mvc 4) 中使用 sammy 脚本。 默认链接如下:/#/home、/#/contacts、/#/faq 等。 如何仅在 /home、/contacts、/faq 上更改它们?
【问题讨论】:
哈希描述了 URL 的本地部分,可以使用 location.hash 方法进行修改。如果修改整个 URL,即location.href,浏览器会加载修改后的 URL。
看起来您想要做的是将 Sammy 使用的本地 URL 更改为 #home 或 #contacts,这样一开始就没有空哈希。
下面,Sammy 正在捕获对 URL 的更改,例如用户单击带有 href="#Home" 的锚元素,然后发送 AJAX 请求以获取模板:
Sammy(function () {
/* Navigation requests
*/
this.get("#:view", function () {
switch (this.params.view) {
case "Home":
$.ajax("Home/Index", {
type: "GET",
success: function (result) {
//Append result to page
},
cache: false
});
break;
case "Search":
$.ajax("Search/Index", {
type: "GET",
success: function (result) {
//Append result to page
},
cache: false
});
break;
};
});
}).run();
【讨论】:
location.assign("home") 代替AJAX 请求,但这将加载新文档,类似于location.href = 的工作方式。既然你说你正在构建一个单页应用程序,我想你会想要异步加载和输入新内容到页面,这意味着你必须使用本地 URL,这意味着哈希。