Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 从web worker返回主干模型时,主干模型结构会发生更改_Backbone.js_Web Worker_Backbone.js Collections_Backbone Model - Fatal编程技术网

Backbone.js 从web worker返回主干模型时,主干模型结构会发生更改

Backbone.js 从web worker返回主干模型时,主干模型结构会发生更改,backbone.js,web-worker,backbone.js-collections,backbone-model,Backbone.js,Web Worker,Backbone.js Collections,Backbone Model,我正在尝试用一系列模型重置主干集合。它被重置,但模型结构被更改(嵌套一级) 以下是详细说明: 型号 var SeatModel=Backbone.Model.extend({ })) 收藏 var myCollection=Backbone.Collection.extend({ })) 现在,我正在web worker中执行一些逻辑,它生成一系列模型。数组的大小取决于我点击的url 当阵列准备就绪时,我使用以下方法重置集合中的数据: (在此之前,我已经实例化了集合并将其设置在服务对象中) wo

我正在尝试用一系列模型重置主干集合。它被重置,但模型结构被更改(嵌套一级)

以下是详细说明:

型号

var SeatModel=Backbone.Model.extend({

}))

收藏

var myCollection=Backbone.Collection.extend({

}))

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

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

worker.onmessage=函数(e){

重置后,集合的结构将更改为:

models: Array[3154]
   [0...99]
       0:g.Model
            attributes:
                 attributes:
                       price: "12"  
然而,它应该是这样的:

 models: Array[3154]
       [0...99]
           0:g.Model
                attributes:  
                           price: "12"
此外,阵列中的模型数量也减少了(在这种情况下,应该是6100左右)

我无法弄清楚,是什么导致内部结构在调用集合上的reset时嵌套了一个级别

更新后的帖子


算出了。我们无法发送post message中带有函数的对象,因此数组中的模型只有属性而没有函数。Related

算出了。我们无法发送post message中带有函数的对象,因此数组中的模型只有属性而没有函数。这与问题有关rCollection看起来像?@PaulT.Rawkeen这是一个模型数组,我从一个网络工作者那里返回。我刚刚尝试了
var coll=new Backbone.Collection();
+
coll.reset([{id:1,name:'a},{id:2,name:'b},{id:3,name:'c}]))
一切都是应该的。检查或呈现您真实的
newDataForCollection
以确保我们谈论的是相同的事情。@PaulT.Rawkeen是的,在这种情况下它会起作用。我所做的是,从web worker传递数组。但我刚刚知道,我们不能从web workers传递带有函数的对象。因此,一旦在主线程中收到模型,它们就不再是主干模型。无论如何,感谢您的快速响应欢迎您!很高兴您发现了问题。
                        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"