0

基になるモデルのデータを新しいレコードに更新したときに呼び出されるバックボーンビューのレンダリング操作中に、アニメーションを機能させようとしています。

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));
        }
    }
});

ただし、jQuery UIコールバック関数は、show操作が実行される前に実行されているため、UIが更新され、あるモデル選択から別のモデル選択に更新すると消えます。

要素が適切に非表示になっている場合にのみコールバックが呼び出されるようにするにはどうすればよいですか?

4

1 に答える 1

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);
    }
}
于 2012-10-09T15:23:08.797 に答える