Knockout.js和Sammy.js的行为错误

时间:2012-12-20 11:31:41

标签: javascript knockout.js sammy.js

我正在开发管理面板到我的网站,并决定用淘汰赛和sammy来做。但我遇到了路由问题。我有两页:

http://localhost/admin/element and http://localhost/admin/category. 

在我的元素页面上,我有以下Sammy配置:

Sammy(function() {
            this.get('#:currentpage', function() {
                self.reloadPage(this.params.currentpage);
            });

            this.get('', function() {
                this.app.runRoute('get', '#1');
            });
        }).run();

一切都很完美,但是如果我尝试去另一个页面(通过常规链接,例如Edit Categories),我就会到达同一页面上的空路线,所以我无法转到另一个带链接的页面。任何想法如何解决?

2 个答案:

答案 0 :(得分:4)

请勿在Sammy配置中使用''。尝试使用'/'作为根页面或'/ admin / element'代替您的元素。

var Router = function() {
    var sammy = new Sammy.Application(function() {

            this.get('#:currentpage', function(context) {
                alert(context.params.currentpage);
            });

            this.get('/admin/element', function () {
                this.app.runRoute('get', '#1');
            });

        }),
        run = function() {
            sammy.run();
        };

    return {
        run: run
    };
};

$(function() {
    var r = new Router();
    r.run();
});

PS:该示例使用Sammy 0.7.1的版本。在0.6.3版本中,还有另一种行为。

答案 1 :(得分:0)

如果您有一个操作链接并想要点击进入另一个页面

,则此方法有效
`<li>@Html.ActionLink("Admin Action Link Test", "Admin", "Home")</li>
this.get('/Home/Admin', function ()
                {
                    location.assign("/Home/Admin");
                });`   

或者你可以使用哈希

来做到这一点
<li><a href="#/Home/About">About Full Path</a></li>  
this.get('#/Home/About', function ()
                {                       
                    location.assign("/Home/About");                   
                });