1

クリックするとバックボーン ビューを作成し、コントロールをバインドするメニューがあります。これは、メニューをクリックするたびに発生します。私が知る必要があるのは、ビューが定義されてレンダリングされる前に (メニューをクリックするたびに) メモリからバックボーン オブジェクトをクリアする方法です。

そうしないと、メニューがクリックされるたびに、バックボーンが新しいビューを作成し、すべてのコントロールを再バインドします。だから私はこのようなものを得る:

r {cid: "view1", options: Object, $el: b.fn.b.init[1], el: div#templatePlaceholder, constructor: function…}
r {cid: "view2", options: Object, $el: b.fn.b.init[1], el: div#templatePlaceholder, constructor: function…}
r {cid: "view3", options: Object, $el: b.fn.b.init[1], el: div#templatePlaceholder, constructor: function…}

注: DOM は 1 つのレンダリングのみを表示します

編集: コード:

            var app = {
                Collection: Backbone.Collection.extend({}),
                Model: Backbone.Model.extend({}),
                View: Backbone.View.extend({
                    initialize: function(){
                        this.setElement($('#templatePlaceholder'));
                    },
                    render: function () {
                        var that = this;
                        Q.when(formDataGet.execute()).then(function (data) {
                            that.$el.html(data);
                       });
                    },
                    events: {
                        "click button[id=lbtn]": "goLeft",
                        "click button[id=rbtn]": "goRight"  
                    },

                    goLeft: function () {
                        // Button clicked
                        console.log(this);
                    },
                    goRight: function () {
                        // Button clicked
                        console.log(this);
                    }

                }),

            };


            var view = new app.View({
            });

            view.render();

このコードは、メニュー項目がクリックされるたびに発生します。そして、これは新しいビューを作成します。

4

1 に答える 1

1

コアバックボーンには2つの方法が考えられます(おそらくもっとあるでしょうが、それは最初です)

  1. ビューへの参照を保持し、メニューを閉じる必要がある場合はremove()、ビューを呼び出します

  2. ビューを削除する必要はありません。表示/非表示にするだけで問題ありません。

  3. ビューを維持するための構造化された方法を持つ Marrionette / Chapline / LayoutManager を使用します

あなたのアプリ/構造とユースケースについての詳細情報は、私がより多くを助けることを可能にします

于 2013-04-15T02:13:47.177 に答える