我有一个简单的Sammy.js应用程序,如下所示:
Sammy(function () {
this.get('#/project/:projectId', function () {
// REST load content into div
});
this.get('#/', function () {
// Load blank div
});
this.get('', function () {
this.app.runRoute('get', '#/');
});
}).run();
这段代码运行得很好,要么通过restful方法加载内容,要么显示空白div。但是我的应用程序有一个MVC结构,我需要转到http://localhost/logout
以确保应用程序将用户注销并终止会话。
但是,我的应用程序中指向注销网址的任何html链接都不会被调用。 URL栏显示注销URL,但注销操作不会发生。
我可以使用sammy捕获链接网址,如下所示:
this.get('logout', function () {
// What should happen here?
});
但我不确定如何让sammy真正称呼这个网址。我试过this.refresh()和this.get('/ logout')但是没有按预期工作。
答案 0 :(得分:1)
我是Sammy的新手,当我遇到同样的错误时,我正在做一个教程。出于某种原因,get('',function()...)获取的所有url与其他url不匹配get方法,而只是匹配'empty'url。我这样解决了我的问题。
我在Sammy主页上看到了这一点:http://sammyjs.org/
Sammy(function () {
this.get('#/project/:projectId', function () {
// REST load content into div
});
this.get('#/', function () {
// Load blank div
});
//remove this
//this.get('', function () {
// this.app.runRoute('get', '#/');
//});
// put your initial url inside run
}).run("#/");
答案 1 :(得分:0)
实际上对我有用的代码,看起来很可怕,是标准的document.location.href:
var sammy = Sammy(function () {
this.get('#/project/:projectId', function () {
// does some stuff with knockout.js
});
this.get('#/', function () {
// does some stuff with knockout.js
});
this.get('/logout', function () {
document.location.href = './logout';
});
this.get('', function () {
location.hash = '/';
});
});