2013-02-28 42 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); 

    } 
相關問題