【问题标题】:Sammy routing not working as expectedSammy 路由未按预期工作
【发布时间】: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


    【解决方案1】:

    使用哈希时,请尝试使用'#/<the_path>' 而不是'#<the_path>' 定义路由。在文档中查看更多示例:http://sammyjs.org/docs/routes 我认为这将解决您的问题。

    但如果'/'路由继续先执行,则尝试将其定义在最后一个位置。

    【讨论】:

    • 感谢您的及时建议。事实证明,这不是我的问题,但它确实帮助我更好地理解它。我将单独发布我的最终解决方案。
    【解决方案2】:

    这个问题原来是代码中另一个区域的问题。在主应用程序视图模型的初始化函数中,我调用了#home 路由函数。此外,在其他地方我曾错误地将这个init 函数称为之前 ko.applyBindings 函数。一旦我改变了顺序,一切都会更好。

    【讨论】:

      猜你喜欢
      • 2014-05-02
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多