2

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

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 锚点时,取消委托有效,但是当提取完成时,.bind(...) 无法重新绑定事件。我也尝试使用.delegate(...)。

4

1 回答 1

3

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

当在Underscore中调用fetchwrapsuccess函数时,它指向您的视图:bindthis

this.collection.fetch(({async: true, success : _.bind(this.renderAllConsumers, this)}));
于 2012-11-28T14:44:28.383 回答