SammyJS并不总是开火

时间:2013-10-14 20:20:15

标签: knockout.js sammy.js

我目前正在开发使用sammyjs + knockoutjs的小型SPA。

我有一个index.html,它包含路由机制和一个id为'main'的div。

在我的示例中,我简化了问题,第1页和第2页使用partial加载html页面。特定的html页面有敲除绑定。

问题:当我使用链接在页面之间切换时,路由并不总是触发。当使用适当的链接重新加载页面时,它会毫无问题地触发和加载。

我试着将它放入JSBin:

http://jsbin.com/ufOroze/3/edit?html,js,console,output

当您点击链接时,他们应该从远程html文件(p1.html和p2.html)实际加载一些内容 - 尽管这不适用于JSBin。无论如何。您会看到呼叫,并不总是被触发,以及控制台上的链接。

我还在我的服务器上放了一个例子。在那里,您还可以找到包含整个示例的zip文件的链接:http://www.tomgrill.info/sammy_test/sammy_test.zip

有人有想法吗?我是否误解了sammyjs的概念oder是否有错误?

最好,汤姆

2 个答案:

答案 0 :(得分:0)

试试这个: -

app = $.sammy('body', function (context) {
    this.get('#/', function () {
        console.log('Clicked');
        this.app.swap('sammy test');
    });
    this.get('#/:id', function () {
        console.log('Clicked');
        var id = this.params.id;
        ko.unapplyBindings($('#main'), false);
        this.partial('pages/' + id + '.html');
    });


});

答案 1 :(得分:0)

为什么不收获淘汰赛的力量让它为你渲染#main div,现在你混合了淘汰赛和jQuery。

我为KO制作了一个轻量级SPA引导程序,这是一个演示项目

https://github.com/AndersMalmgren/Knockout.Bootstrap.Demo

它通过配置方式为您处理模板。

编辑:Wiki,展示如何在任何后端进行设置

https://github.com/AndersMalmgren/Knockout.Bootstrap/wiki

基本上,您需要公开返回模板的REST服务