2012-10-09 80 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