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 的each方法,它可以让您传递this到循环的上下文中:

 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 回答