从web worker返回时,骨干模型结构会发生变化

时间:2014-07-11 10:08:28

标签: backbone.js web-worker backbone-collections backbone-model

我正在尝试使用一系列模型重置骨干集合。它被重置但模型结构发生了变化(嵌套一层)。

以下是详细说明:

模型

  

var SeatModel = Backbone.Model.extend({

   defaults:{

  },   
   initialize:function () {
       console.log('Model initialized');
   }
     

});

集合

  

var myCollection = Backbone.Collection.extend({

   url:"",

   parse:function (data) {
   },

   initialize:function () {
       console.log('Collection initialized');
   } 
     

});

现在,我正在web worker中执行一些逻辑,它会生成一组模型。数组的大小取决于我点击的网址。

当阵列准备就绪时,我使用以下内容重置集合中的数据: (在此之前,我已经实例化了集合并将其设置在服务对象中)

  

worker.onmessage = function(e){

                        newDataForCollection = e.data;
                        //update the collection
                        service.get("myCollection").reset(newDataForCollection);
                      };

重置后,集合的结构变为:

models: Array[3154]
   [0...99]
       0:g.Model
            attributes:
                 attributes:
                       price: "12"  

它应该像:

 models: Array[3154]
       [0...99]
           0:g.Model
                attributes:  
                           price: "12"

此外,阵列中的模型数量也会减少。 (在这种情况下应该是6100左右)。

我无法弄清楚是什么原因导致内部结构在调用集合上的重置时被一个级别嵌套。

更新帖子

想出来。我们不能在post消息中发送带有函数的对象,因此数组中的模型只具有属性而没有函数。相关Passing objects to a web worker

1 个答案:

答案 0 :(得分:0)

想出来。我们不能在post消息中发送带有函数的对象,因此数组中的模型只具有属性而没有函数。这与问题Passing objects to a web worker

有关