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ないため、関数を指していません。

fetchwrapを呼び出すときは、success関数をアンダースコアbindでラップして、ビューをthis指すようにします。

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