5

私はしばらくバックボーンで作業しており、現在はいくつかのビューを使用しています。一部のビューでは、次のようなカスタム属性を追加することがあります。

    var DataGrid = Backbone.View.extend({
        className:"datagrid",
        lookup: {
            header: "", //Header wrapper row element
            headers: [], //Views in header
            body: "", //Body wrapper row element
            rows: [] //Views in body
        },

        events: {
            ...
        },

        initialize: function() {
            ...
        },

        render: function() {
            ...
        }
    });

ご覧のとおり、オブジェクトへの追加属性として「ルックアップ」があります。多くのビューで DataGrid を使用していますが、非常に奇妙な動作が発生しています。DataGrid を使用するビューを切り替えると、「ルックアップ」にはまだ古いデータが入力されます。新しい DataGrid を作成するときに「new」を使用しますが、古いデータがまだ見つかります。何か不足していますか?

編集: @rabs の返信に続きます。Backbone で静的変数を検索したところ、これが見つかりました: Simplify using static class properties in Backbone.js with Coffeescript

4

2 に答える 2

5

この方法で変数を宣言すると、静的変数やクラス変数と同様に、変数のスコープはインスタンスではなくクラスになります。

つまり、ルックアップオブジェクトは異なるインスタンス間で共有されます。

ルックアップオブジェクトを作成するときに、インスタンス変数として動作するようにルックアップオブジェクトをインスタンスに渡すことができます。

于 2012-10-04T09:32:14.620 に答える