Backbone事件处理导致不必要的重新加载,我可以避免这种情况吗?

时间:2014-11-19 20:33:31

标签: jquery backbone.js backbone-views backbone-events backbone-routing

我有一个包含复杂视图的页面,我想要它是可链接的。

示例:当某个面板打开时,我将网址更改为www.example.com/#panel-1。

这很好。

我想使用Backbone充当普通事件处理程序而不更改路由或重新加载。我有:

var ApplicationView = Backbone.View.extend({

el: $('body'),

events: {
    'click #comingsoon': 'displayComingSoon'
},

displayComingSoon: function(){
    //some jquery code to add or remove classes
}

});

但我的问题是在执行此代码之后,页面重新加载并删除了类。我是否必须指定使用骨干进行事件处理的路由?我希望URL不会因此事件而改变。

1 个答案:

答案 0 :(得分:1)

返回false是Javascript取消事件默认操作的方法之一(有关详细信息,请参阅this questionthis other question)。例如,链接上的单击事件会导致浏览器导航到该链接,但如果在事件处理程序中返回false,则会取消此默认行为。

因此,您可以将其应用于骨干视图中的事件处理程序:

var ApplicationView = Backbone.View.extend({
    el: $('body'),
    events: {
        'click #comingsoon': 'displayComingSoon'
    },
    displayComingSoon: function(){
        //some jquery code to add or remove classes
        return false;
    }
});