如何使用sammy.js订阅“route”事件?

时间:2012-10-15 12:00:44

标签: events navigation sammy.js

我使用sammy.js进行导航,我必须处理更改链接后发生的事件。例如,用户点击“#/ contact”链接,因此,在成功导航后,我希望触发我的事件。我找到了“after”属性并尝试插入此代码:

this.after('#/contact', function () {
    //my code
});

但它没有执行。 我做错了什么?

事实上,问题来自以下情况:

我有一个包含2个标签的页面:主页和联系人。联系人包含谷歌地图。

如果用户首先进入联系人,则谷歌地图已正确加载,但如果用户进入“主页”选项卡然后切换到“联系人”选项卡,则谷歌地图未正确加载,我只能看到一小块地图左上角。

有什么建议吗?

提前谢谢!

2 个答案:

答案 0 :(得分:3)

我建议使用自定义事件来解决此问题:

var app = $.sammy(function() {

    this.get('#/contact', function() {
        this.trigger('myEvent', { myData: 'This a contact!' });
    });

});

或者,如果您想收听已经运行的所有路线,请尝试:

this.bind('run-route', function() {
    console.log("I got routed");
}

答案 1 :(得分:0)

如果我理解你的话,你只需要这样做:

location.hash = "contact";

路线事件将会触发。