Javascript 传输主干.js模型?

Javascript 传输主干.js模型?,javascript,json,backbone.js,Javascript,Json,Backbone.js,如果我使用嵌套的集合/模型对主干模型进行JSON.stringify,则通过WebSocket将其发送到另一个主干客户端,并对模式进行JSON.parsemodel=JSON.parse(model)变量模型会像在其他客户机上一样工作吗?我知道主干网为其每个对象维护一个内部id,因此如果您按照您的建议传输它们,我不知道它如何工作,而不存在冲突或重复cid的可能性 从主干网的网站: 作为模型的特殊属性,cid或客户端id是唯一的 当所有模型第一次出现时自动分配给它们的标识符 创建。当模型尚未保存到

如果我使用嵌套的集合/模型对主干模型进行JSON.stringify,则通过WebSocket将其发送到另一个主干客户端,并对模式进行JSON.parse
model=JSON.parse(model)
变量模型会像在其他客户机上一样工作吗?

我知道主干网为其每个对象维护一个内部id,因此如果您按照您的建议传输它们,我不知道它如何工作,而不存在冲突或重复cid的可能性

从主干网的网站:

作为模型的特殊属性,cid或客户端id是唯一的 当所有模型第一次出现时自动分配给它们的标识符 创建。当模型尚未保存到时,客户端ID非常方便 服务器,并且还没有其最终的真实id,但已经 需要在UI中可见。客户端ID的形式为:c1、c2、c3

编辑:

在阅读了“穆太短”的回答后,我同意他的回答,但为了对他在下面留下的评论进行解释,我发现他的评论内容非常丰富。因为backbone.js模型有一个toJSON()函数,当您调用JSON.stringify(model)时,它不会像您预期的那样解析出所有属性,它只解析toJSON()方法返回的对象。“mu太短”的最佳答案


MDN Info JSON.stringify():

我知道主干网为它的每个对象都维护一个内部id,因此如果您按照您的建议传输它们,我不知道它如何工作,而不存在冲突或重复cid的可能性

从主干网的网站:

作为模型的特殊属性,cid或客户端id是唯一的 当所有模型第一次出现时自动分配给它们的标识符 创建。当模型尚未保存到时,客户端ID非常方便 服务器,并且还没有其最终的真实id,但已经 需要在UI中可见。客户端ID的形式为:c1、c2、c3

编辑:

在阅读了“穆太短”的回答后,我同意他的回答,但为了对他在下面留下的评论进行解释,我发现他的评论内容非常丰富。因为backbone.js模型有一个toJSON()函数,当您调用JSON.stringify(model)时,它不会像您预期的那样解析出所有属性,它只解析toJSON()方法返回的对象。“mu太短”的最佳答案

MDN Info JSON.stringify():

也许我会详细说明。当我这样做时:

var o = JSON.parse(JSON.stringify(model));
我在
o
中得到了一个简单的对象。为什么?首先,
JSON.parse()。此外,
JSON.stringify
将对其参数调用
toJSON
方法(当然,如果它有参数的话),该方法只会将模型属性的副本作为简单(可能是嵌套的)对象返回。因此,一旦您获得了来自
JSON.stringify(model)
的输出,字符串和模型之间就没有任何连接,您只需要一个普通的旧序列化JavaScript对象

如果您想将主干模型从一个系统移动到另一个系统,我认为您必须自己跟踪所有的模型类型和对象信息,然后在另一侧手动重建对象图的序列化部分

您最好将模型保存回其URL,将ID发送到另一个主干客户机,然后像往常一样从模型的URL重新加载它。JSON用于序列化数据,而不是对象,将数据解释为对象由应用程序决定。

也许我会详细说明。当我这样做时:

var o = JSON.parse(JSON.stringify(model));
我在
o
中得到了一个简单的对象。为什么?首先,
JSON.parse()。此外,
JSON.stringify
将对其参数调用
toJSON
方法(当然,如果它有参数的话),该方法只会将模型属性的副本作为简单(可能是嵌套的)对象返回。因此,一旦您获得了来自
JSON.stringify(model)
的输出,字符串和模型之间就没有任何连接,您只需要一个普通的旧序列化JavaScript对象

如果您想将主干模型从一个系统移动到另一个系统,我认为您必须自己跟踪所有的模型类型和对象信息,然后在另一侧手动重建对象图的序列化部分


您最好将模型保存回其URL,将ID发送到另一个主干客户机,然后像往常一样从模型的URL重新加载它。JSON用于序列化数据,而不是对象,将数据解释为对象由应用程序决定。

但是
cid
不会出现在
JSON.stringify()
输出中,主干的
toJSON()
只返回模型的属性。因此,您必须手动完成所有序列化,然后在另一端对模型类型和对象id进行排序,以重新生成图形。试着用一个主干模型做一个
console.log(JSON.parse(JSON.stringify(model))
,你会看到发生了什么。@muistooshort回答得很好,谢谢你提供的JSON.stringify()信息。但是
cid
不会出现在
JSON.stringify()
输出中,主干的
toJSON()
仅返回模型的属性。因此,您必须手动完成所有序列化,然后在另一端对模型类型和对象id进行排序,以重新生成图形。尝试使用一个主干模型执行
console.log(JSON.parse(JSON.stringify(model)))
,您将看到发生了什么。@muistooshort回答得很好,感谢您提供了JSON.stringify()信息。感谢您的帮助