0

我有一个简单的 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确保应用程序将用户注销并终止会话。

但是,我的应用程序中指向注销 url 的任何 html 链接都不会被调用。URL 栏显示注销 URL,但不会发生注销操作。

我可以使用 sammy 捕获链接 url,如下所示:

this.get('logout', function () {
                // What should happen here?
            });

但我不确定如何让 sammy 真正调用这个 url。我已经尝试过 this.refresh() 和 this.get('/logout') 但都没有按预期工作。

4

2 回答 2

1

我是 Sammy 的新手,当我遇到同样的错误时,我正在做一个教程。出于某种原因,get('', function()...) 正在获取与其他 get 方法不匹配的所有 url,而不是仅与“空”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("#/");
于 2013-08-20T21:58:44.770 回答
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 = '/';
            });
        });
于 2013-08-21T09:33:28.617 回答