Javascript JSON数据的Backbone.js设计模式
我有一个关于设计JSON文件的最佳实践的问题,该文件将由Backbone.js显示。我知道主干在这个话题上是完全不可知的,但在这种情况下,也许有人会给我一些好的建议 最后,我需要一些像这样的观点Javascript JSON数据的Backbone.js设计模式,javascript,json,backbone.js,backbone.js-collections,backbone-model,Javascript,Json,Backbone.js,Backbone.js Collections,Backbone Model,我有一个关于设计JSON文件的最佳实践的问题,该文件将由Backbone.js显示。我知道主干在这个话题上是完全不可知的,但在这种情况下,也许有人会给我一些好的建议 最后,我需要一些像这样的观点 On 4th of July, in _____ we calebrate ____ day. "body": [ { "preInputText": "On 4th of July, in ", "postInp
On 4th of July, in _____ we calebrate ____ day.
"body": [
{
"preInputText": "On 4th of July, in ",
"postInputText": "",
"answersID": ["1", "2"]
},
{
"preInputText": "we calebrate ",
"postInputText": " day",
"answersID": ["3"]
}
]
"answers": [
{
"ID": "1",
"content": "USA",
"correct": true
},
{
"ID": "2",
"content": "Canada",
"correct": false
},
{
"ID": "3",
"content": "Independent",
"correct": true
}
]
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
所以,我需要一个JSON文件来描述这段文本
我考虑过这样的事情
On 4th of July, in _____ we calebrate ____ day.
"body": [
{
"preInputText": "On 4th of July, in ",
"postInputText": "",
"answersID": ["1", "2"]
},
{
"preInputText": "we calebrate ",
"postInputText": " day",
"answersID": ["3"]
}
]
"answers": [
{
"ID": "1",
"content": "USA",
"correct": true
},
{
"ID": "2",
"content": "Canada",
"correct": false
},
{
"ID": "3",
"content": "Independent",
"correct": true
}
]
或者,可能更简单,但不是那么平坦
"body": [
{
"preInputText": "On 4th of July, in ",
"postInputText": "",
"answers": [
{
"ID": "1",
"content": "USA",
"correct": true
},
{
"ID": "2",
"content": "Canada",
"correct": false
},
]
}
]
etc…
所以,第一种方法强制创建两个集合,将它们传递到一个视图中,并检查它们之间的值。
第二个是模型的一个集合,包含主体和答案,但在初始化时解析它们并使用嵌套构造
我不知道(使用嵌套模型)是不是一种糟糕的做法,但正如我所读到的,主干网的设计是为了以更扁平的方式思考
也许还有另一种逻辑?你觉得怎么样
谢谢
"body": [
{
"preInputText": "On 4th of July, in ",
"postInputText": "",
"answers" [ { "ID": "1", "content": "USA", "correct": "true"},
{ "ID": "1", "content": "canada", "correct": "false"}
]
},
{
"preInputText": "we calebrate ",
"postInputText": " day",
"answersID": [{ "ID": "3", "content": "Independent", "correct": "true"},
]
}
]
使用此结构,您需要使用一个集合。然后,可以将其中的每个对象视为一个模型,并可以在集合视图中使用它们各自的视图进行渲染。所以这里需要使用嵌套模型我更倾向于第一种方法(平面方法),我不同意你的观点,它强制创建两个集合
您始终可以创建一个集合并覆盖它的parse
函数,如下所示:
var MyCollection = Backbone.Collection.extend({
...
parse: function(resp) {
this.answers = new Backbone.Collection(resp.answers);
return resp.body;
}
});
...
// myCollection is an instance of MyCollection
myCollection.models // refer to questions
myCollection.answers // refer to answers
但是我可以这样使用“get”方法吗?当然,为了获得正确的值,因为现在答案不是集合,而是数组。你不能使用get,但正如你所说,你可以根据需要操纵myCollection.answers
,因为它是一个对象数组。好的,但是你认为它比嵌套层次结构的第二种方法更优雅吗?是的,对我来说,在这种方法中,我们保持简单