【问题标题】:how to change sammy routes如何更改萨米路线
【发布时间】:2012-11-29 15:47:21
【问题描述】:

我在 spa 模板 (c#, mvc 4) 中使用 sammy 脚本。 默认链接如下:/#/home、/#/contacts、/#/faq 等。 如何仅在 /home、/contacts、/faq 上更改它们?

【问题讨论】:

    标签: c# routes sammy.js


    【解决方案1】:

    哈希描述了 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();
    

    【讨论】:

    • 不完全是。我有 2 条路线:“#/home”和“#/contact”。一切正常。现在我想更改这两条路线并拥有以下内容:“home”和“contact”(不带“#”前缀)。当我这样做时,浏览器会显示“未找到”。如何“欺骗”浏览器?
    • 您可以使用location.assign("home") 代替AJAX 请求,但这将加载新文档,类似于location.href = 的工作方式。既然你说你正在构建一个单页应用程序,我想你会想要异步加载和输入新内容到页面,这意味着你必须使用本地 URL,这意味着哈希。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 2011-12-01
    • 1970-01-01
    相关资源
    最近更新 更多