2013-02-28 22 views
0

在我的backbone.js视图中,我有一个具有以下代码的函数。我通常会使用this.addLayerToList()来调用这个函数,但是因为它在$.each这个。不是我想要的。任何人都可以帮忙吗?我将如何从$.each调用我的函数addLayerToList?

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

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

回答

1

这应该有效。

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

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

由于您使用的骨干,Underscore.js也包括在内,并提供给您。您可以使用下划线的each方法,它可以让你通过this到你的循环的情况下:

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

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

如果baselyayers是骨干collection,则可以简化代码远一点:

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

    } 
相关问题