0

これを処理するための最良の方法は何であるか疑問に思っていました。バックボーンビューの1つ内の複数のメソッド内で参照しているdivがあり、毎回再クエリを実行し続ける必要がないとします。

例えば

Backbone.View.extend({
    showReviewOverlay : function(evt) {
        var $overlay = $('#js-add-review-overlay');
        $(evt.currentTarget).prepend($overlay.show());
    }
    hideReviewOverlay : function(evt) {
        var $overlay = $('#js-add-review-overlay');
        $(evt.currentTarget).closest($overlay.hide());
    }
});

それを参照するための好ましい方法は、それをオブジェクトとして宣言することでしょうか?それとも、私が知らないより良いパターンがありますか?

例えば

Backbone.View.extend({
    overlay : { 'container' : $('#js-add-review-overlay') },

    showReviewOverlay : function(evt) {
        $(evt.currentTarget).prepend(this.container.overlay.show());
    }
    hideReviewOverlay : function(evt) {
        $(evt.currentTarget).closest(this.container.overlay.hide());
    }
});
4

1 に答える 1

2

これが特定のケースである場合は、renderが呼び出されたときに要素への参照を取得できます。

Backbone.View.extend({
    render: function () {
        // do rendering stuff
        this.$overlay = this.$('#js-add-review-overlay');
    },
    showReviewOverlay : function(evt) {
        $(evt.currentTarget).prepend(this.$overlay.show());
    }
});
于 2012-11-26T23:51:12.003 に答える