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
Object 如何将模型对象嵌入到另一个模型对象中_Object_Backbone.js_Set_Backbone Model - Fatal编程技术网

Object 如何将模型对象嵌入到另一个模型对象中

Object 如何将模型对象嵌入到另一个模型对象中,object,backbone.js,set,backbone-model,Object,Backbone.js,Set,Backbone Model,我正在尝试使用以下代码创建一个包含另一个模型对象的模型对象 //create a question object to be embedded question = new Onethingaday.Models.Question() question.set({id:"123456"},{text:"xxxx"},{slug:"xxxx"}) //create the main muse object which contains the question object muse = new

我正在尝试使用以下代码创建一个包含另一个模型对象的模型对象

//create a question object to be embedded
question = new Onethingaday.Models.Question()
question.set({id:"123456"},{text:"xxxx"},{slug:"xxxx"})

//create the main muse object which contains the question object
muse = new Onethingaday.Models.Muse()
muse.set({question:question.toJSON()})
我希望收到的muse模型结构如下:

但是,我得到了以下结构

与预期结果相比,我似乎得到了另一层“问题:对象”


如何设置对象以获得预期结果?或者我需要操纵结果来删除附加层吗?

首先,这并不是你认为的那样:

question.set({id:"123456"},{text:"xxxx"},{slug:"xxxx"})
id
设置为
“123456”
,将
{text:“xxxx”}
视为选项,并忽略
{slug:“xxxx”}
。你想说:

question.set({
    id:   "123456",
    text: "xxxx",
    slug: "xxxx"
});
设置这三个属性

关于真正的问题。问题很简单:

return _.clone(this.attributes);
因此,您必须使用将
toJSON
更改为包含
question
键的内容,而不是简单地返回attributes对象。您可以尝试使用股票主干:

var M1 = Backbone.Model.extend({});
var M2 = Backbone.Model.extend({});

var m1 = new M1;
m1.set({ a: 'b', c: 'd' });

var m2 = new M2;
m2.set({ m1: m1.toJSON() });

console.log(m2.attributes);
您将在控制台中看到:

m1: Object
    a: "b"
    c: "d"
没有额外的名称空间。演示:

因此,您或您正在使用的某个库已将
更改为JSON
,您必须考虑到这一点:​

var muse = new Onethingaday.Models.Muse()
muse.set(question.toJSON());
您可以看看
console.log(question.toJSON())
要说些什么来验证
toJSON
是否出错