gpt4 book ai didi

routing - 萨米路由不起作用

转载 作者:行者123 更新时间:2023-12-04 18:10:08 24 4
gpt4 key购买 nike

我无法让 sammy.js 路由按预期工作。

我有以下 JavaScript。

(function ($) {

var app = $.sammy('#main', function () {

this.get('#/', function (context) {
context.log("start page");
});

this.get("#/another/:id/", function (context) {
context.log("another page with id = " + context.params["id"]);
});
});

$(function (context) {
app.run('#/');
});

})(jQuery);

我的理解是,每当 URL 发生变化时,只要新路由对应于声明的路由之一,那么我应该会在控制台日志中看到相关消息。

但我没有。

当页面第一次加载时,我可以看到“起始页面”消息。到现在为止还挺好。

如果我那时
  • 单击指向 [我的网址]/#/another/1/
  • 的链接
  • 在地址栏中手动输入 [my url]/#/another/1/并按

  • ...没有任何 react ,即我没有看到第二条路线的消息。

    但是,对于地址栏中的第二条路由,如果我现在按 F5 或单击浏览器的刷新按钮,页面将重新加载并显示预期的控制台消息。

    当超链接或键盘更改了 URL 哈希值时,我是否误解了,或者 Sammy 不应该注意到,然后采取相应的行动?还有什么我需要添加到我的脚本中的吗?

    最佳答案

    每个 sammy 应用程序都需要附加到一个 DOM 元素。

    所以你可能错过了 #main元素形成您的页面。

    所以你需要添加一个 #main DOM 中某处的元素:

    <div id="main">
    </div>

    或者你需要在没有选择器的情况下初始化 sammy
    var app = $.sammy(function () {

    this.get('#/', function (context) {
    context.log("start page");
    });

    this.get("#/another/:id/", function (context) {
    context.log("another page with id = " + context.params["id"]);
    });
    });

    在这种情况下,它连接到 body元素。

    Live Demo .

    关于routing - 萨米路由不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16040732/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com