在backbone.js视图中,如何从jquery $ .each调用另一个函数?

时间:2013-02-28 14:36:44

标签: backbone.js backbone-views

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

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

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

2 个答案:

答案 0 :(得分:2)

这应该有用。

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

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

答案 1 :(得分:1)

由于您使用的是Backbone,因此您也可以使用Underscore.js。您可以使用Underscore的each方法,该方法可以将this传递到循环的上下文中:

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

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

如果baselyayers是Backbone collection,您可以进一步简化代码:

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

    }