0
var JavascriptHelper = Backbone.Model.extend("JavascriptHelper",
        {}, // never initialized as an instance
        {
            myFn: function() {
                $('.selector').live('click', function() {
                    this.anotherFn(); // FAIL!
                });
            },

            anotherFn: function() {
                alert('This is never called from myFn()');
            }
        }
    );

_.bindAll(this, ...)このモデルをインスタンスとして初期化していないため、通常のアプローチはここでは機能しません。何か案は?ありがとう。

4

1 に答える 1

1

手でそれを行うことができます:

myFn: function() {
    $('.selector').live('click', function() {
        JavascriptHelper.anotherFn();
    });
}

または、呼び出されたときにanotherFn何を気にしない場合 (または何を使用するかを気にしない場合):thisthislive

myFn: function() {
    $('.selector').live('click', JavascriptHelper.anotherFn);
}

余談ですが、liveは推奨されなくなりましたon。また、JavascriptHelper をインスタンス化していない場合、なぜ Backbone.Model なのですか? 単純なオブジェクト リテラルを使用しない理由:

var JavascriptHelper = {
    myFn: function() {
        //...
    },
    anotherFn: function() {
        //...
    }
};

そして、あなたはこの構造に何を期待していますか:

var JavascriptHelper = Backbone.Model.extend(string, {}, {...})

あなたを残すにはJavascriptHelper?文字列を拡張するのは奇妙ですが、 に 3 つの引数を渡すのBackbone.Model.extendは無意味です。2 つの引数だけを気にします。静的プロパティが必要な場合は、それらを2番目の引数として渡す必要があります。

var JavascriptHelper = Backbone.Model.extend({}, { myFn: ... });
于 2012-06-08T04:38:40.487 に答える