在collection.fetch成功回调中重新绑定事件

时间:2012-11-28 13:43:08

标签: backbone.js

在我看来,我有以下绑定:

events: 
{
     'click #showallconsumers': 'showAllConsumers',
     'submit form': 'submit',
     'click #allconsumerstable tbody tr': 'selectConsumer',
},

在showAllConsumers函数中,我需要在获取完成后禁用点击#showallconsumers锚点,获取集合并在#showconsumers上重新绑定点击事件。

showAllConsumers: function()
{       
    $(this.el).undelegate('#showallconsumers', 'click');

    this.collection.fetch(({async: true, success : this.renderAllConsumers}));

},
renderAllConsumers: function(collection)
{
     //i'm populating table with data from collection 

     $('#showallconsumers').bind('click', this.showAllConsumers);
},

当我点击#showallconsumers anchor时,undelegate工作,但是当提取完成时,.bind(...)无法重新绑定事件。我也试过.delegate(...)。

1 个答案:

答案 0 :(得分:3)

success fetch函数未被调用视图作为其上下文,因此this.showAllConsumers未指向您的函数。

fetch中调用success封送this功能,以便this.collection.fetch(({async: true, success : _.bind(this.renderAllConsumers, this)})); 指向您的观点:

{{1}}