在sammyJS javascript插件中导航问题?

时间:2012-12-04 12:24:26

标签: javascript jquery sammy.js

我在单页应用程序中使用sammy.js插件。插件无效,每当用户尝试在页面中导航时,它在控制台上显示以下错误:

[Tue Dec 04 2012 17:48:13 GMT+0530 (India Standard Time)] #main 404 Not Found get /page_home  
Error
arguments: undefined
get stack: function () { [native code] }
message: "404 Not Found get /page_home "
set stack: function () { [native code] }
type: undefined
__proto__: d

这是什么问题以及如何解决?

修改

Sammy配置代码:

 var app = $.sammy('#main', function () {
        this.get('#/:name', function () {
            var id = this.params['name'];
            $.trim(id);
            var flag = true;

            if ($("#main").hasClass("presentation")) {
                $.each(slides, function (i, v) {
                    if ($(v).attr("class") == id) {
                        ScanNavigationD(id);
                        flag = false;
                        return false;
                    }
                });
                if (flag) {
                    ScanNavigationD($(slides[0]).attr("class"));
                }
            }
            else if ($("#main").hasClass("printdoc") || typeof $("#main").attr("class") == "undefined") {
                $.each(Pages, function (i, v) {
                    if ($(v).attr("class") == id) {
                        ScanNavigationD(id);
                        flag = false;
                        return false;
                    }
                });
                if (flag) {
                    ScanNavigationD($(Pages[0]).attr("class"));
                }
            }
        });
    });

    $(function () {
        app.run();
    });

3 个答案:

答案 0 :(得分:2)

@ tom-rider问题是没有参数调用的app.run。 sammy app.run函数接受一个start_url参数来设置(通过_setLocation方法)app当前位置,然后调用_checkLocation方法来检查url是否被更改... 所以尝试改变

app.run();

app.run('#/');

这项工作对我而言。

按照此fiddle进行工作演示并查看控制台:没有错误!

答案 1 :(得分:0)

这个简单的代码会起作用吗?

var app = $.sammy('#main', function () {
    this.get('#/:name', function () {
        alert(this.params['name']);
    });
});

$(function () {
    app.run();
});

如果这个小代码警告'page_home'你的脚本里面有问题: 那么你应该能够回答这些问题:ScanNavigationD-Function在哪里? “幻灯片”/“页面”在哪里 - 数组定义?

编辑:

好吧,我在我的电脑上做了另一次测试。多数民众赞成我所做的:

  1. 创建了一个html文档
  2. 包括第一个jQuery然后是sammy.js

    < script src =“http://code.jquery.com/jquery-1.8.3.min.js”type =“text / javascript”>

    < script src =“sammy.js”type =“text / javascript”>

  3. 我用虚拟内容填写了我要求的变量和函数:

    <脚本>

    var ScanNavigationD = function(){},     slides = ['slide1','slide2'],     Pages = ['page1','page2'];

    <脚本>

  4. 然后我将你的代码粘贴到我的html文档中。

    <脚本>   //你的代码 <脚本>

  5. 然后我创建了div-main容器:

  6. 一切顺利。我看到你做错的最后一件事就是,你只是在本地文件系统上。

    sammy.js似乎需要一个网络服务器才能运行!至少是localhost!

    file://...
    

    不会工作

答案 2 :(得分:0)

在运行解析为404 not found错误的脚本时,似乎是在发送page_home作为参数。尝试在整个文件中查找“page_home”,递归查找它的来源。