0

Backbone ビュー内で関数を呼び出したい場合は、このように呼び出す必要があります。

this.functionName()

forEachOrjquery's each関数内で同じ関数を呼び出したい場合は、thisここで別のコンテキストを参照します。したがって、他の変数へのビューの参照を保持する必要があり、以下のように使用する必要があります。

refresh: function () {
   var view = this;

   $("#list").each (function () {
       view.functionName();
   })
}

そして最後に、私のビューを見ると、ほとんどすべての関数をこのように宣言しています。誰かがこれに代わるより良い方法を見つけましたか?

4

3 に答える 3

5

Backbone を使用しているため、既にアンダースコアが表示されています。アンダースコアを使用すると、各呼び出しのコンテキストを指定できます。

refresh: function() {

   _.each($("#list"), function() {
      this.functionName()
   }, this))

}
于 2013-10-08T09:17:05.423 に答える
1

これはJavascriptでは実際に一般的であり、慣例により、変数を呼び出しますthat

var that = this

jQueryには、proxy()関数を呼び出してコンテキスト変数(this)を割り当てたものに設定する関数もあります:http://api.jquery.com/jQuery.proxy/

したがって、次のようなことができます。

refresh: function() {

   $("#list").each($.proxy(function() {
       view.functionName()
   }, this))

}

しかし、ほとんどの場合、それはさらに読みにくいものです。正直なところ、私は一度も使用proxy()したことがなく、いつ使用するかの良い例を思いつきませんが、それが存在することを知ってうれしいです.必要になるかもしれません.

于 2013-10-08T07:57:26.627 に答える