我目前正在开发使用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是否有错误?
最好,汤姆答案 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服务