0

私の backbone.js ビューには、以下のコードを持つ関数があります。通常、この関数は を使用して呼び出しますthis.addLayerToList()が、これは$.eachthis にあるためです。私が欲しいものではありません。誰でもここで助けることができますか?から関数 addLayerToList を呼び出すにはどうすればよい$.eachですか?

initLayerList: function(){
   $.each(baseLayers, function() {
       this.addLayerToList(this);
   });
},

addLayerToList : function() {
     //...some code here
}
4

2 に答える 2

2

これはうまくいくはずです。

initLayerList: function(){
   var that = this;
   $.each(baseLayers, function(idx, layer) {
       that.addLayerToList(layer);
   });
},

addLayerToList : function() {
     //...some code here
}
于 2013-02-28T14:39:12.880 に答える
1

Backbone を使用しているため、Underscore.jsも含まれており、利用できます。Underscore のeachthisメソッドを使用して、ループのコンテキストに渡すことができます。

 initLayerList: function(){
      _.each(baseLayers, function(layer){
        this.addLayerToList(layer);
      }, this);

    },
    addLayerToList : function() {
         //...some code here
    }

baselyayers が Backboneコレクションの場合、コードをもう少し単純化できます。

 initLayerList: function(){
      baseLayers.each(function(layer){
        this.addLayerToList(layer);
      }, this);

    }
于 2013-02-28T22:55:34.737 に答える