【发布时间】:2016-08-19 14:35:09
【问题描述】:
我在 ASP.NET MVC Web 应用程序上使用 Sammy 路由,最初基于 SPA Web 应用程序的标准 MS 模板,它使用 Knockout 和 Sammy 来管理页面加载/路由。我是 Sammy 的新手,所以我不太了解,但我的期望是 /#search 路由将被执行,即使它是第一个页面加载,但似乎不是。 “/”路由总是在“冷”页面加载时执行。
基本上,如果我在调试模式下运行应用程序,一切都可以正常工作。 #home 和 #search 路由按预期工作。但是,如果在调试时,我将此 URL 粘贴到新选项卡或浏览器会话中:
http://pr-dev.dav1.net.fmcti.com/#search/101-4155
然后,似乎不是 /#search 路由代码正在执行,而是“/”路由代码正在执行。无论 url 中是否存在 #search 术语,此路由是否总是在新会话上执行?这是我主页视图模型中配置 SPA 路由的打字稿代码:
// configure SPA routing
Sammy(function () {
this.get("#home", () => {
if (app.view() !== self) {
// load page view model
app.view(self);
}
// clear out any search results
self.hideResults();
self.queryTree.refreshDataSource([]);
self.partSummary(new SR.PR.Query.QueryResult());
self.searchBox.setValue("");
});
this.get("/", function() {
this.app.runRoute("get", "#home");
});
this.get("#search/:pn", function() {
if (app.view() !== self) {
app.view(self);
}
const pn = this.params["pn"];
if (pn) {
SR.PR.Query.doPartSearch(self, pn.toUpperCase());
}
});
});
提前感谢您的帮助!
【问题讨论】:
标签: asp.net-mvc sammy.js