2012-10-09 122 views
0

我試圖讓一些動畫在Backbone視圖的渲染操作期間工作,當我將基礎模型的數據刷新到新記錄時被調用。jQuery UI動畫在動畫開始之前執行回調

SiteView = Backbone.View.extend({ 

    initialize: function() { 
     this.model.bind('change', this.render, this); 
    }, 

    render: function() { 
     if (this.model.get('name')) { 
      var callback = function (view) { 
       view.$("#activesite_name").empty().append(view.model.get('name')); 
       view.$("#activesite_desc").empty().append(view.model.get('description')); 
       $(view.el).show('drop', { direction: 'down' }, 'slow').removeClass('hidden'); 
      }; 

      $(this.el).filter(':visible').fadeOut(500, callback(this)); 
     } 
    } 
}); 

然而在顯示操作,從而在UI更新,然後從一個模型選擇刷新到另一個時消失正在執行jQuery UI的回調函數。

如何才能讓回調僅在元素被隱藏後才被調用?

+0

它正在執行第一次因爲'回調(這)'是一個函數調用,它發生,而'fadeOut'參數正在評估中。 –

回答

2

試試這個:

render: function() { 
    if (this.model.get('name')) { 
     var view = this; 
     var callback = function() { 
      view.$("#activesite_name").empty().append(view.model.get('name')); 
      view.$("#activesite_desc").empty().append(view.model.get('description')); 
      view.$el.show('drop', { direction: 'down' }, 'slow').removeClass('hidden'); 
     }; 

     $(this.el).filter(':visible').fadeOut(500, callback); 
    } 
} 
+0

沒有運氣,根本沒有執行回調。 – Nidonocu

+0

啊,是的,jQuery覆蓋'fadeOut'回調的上下文......修正了答案。 –

+0

謝謝! :)即時調用指向以後調用的指針總是讓我。 – Nidonocu