【问题标题】:In backbone.js view, how do i call another function from jquery $.each?在backbone.js 视图中,我如何从jquery $.each 调用另一个函数?
【发布时间】:2013-02-28 14:36:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: backbone.js backbone-views


    【解决方案1】:

    这应该可行。

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

    【讨论】:

      【解决方案2】:

      由于您使用的是 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);
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多