Javascript 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

我有一个关于设计JSON文件的最佳实践的问题,该文件将由Backbone.js显示。我知道主干在这个话题上是完全不可知的,但在这种情况下,也许有人会给我一些好的建议

最后,我需要一些像这样的观点

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
,因为它是一个对象数组。好的,但是你认为它比嵌套层次结构的第二种方法更优雅吗?是的,对我来说,在这种方法中,我们保持简单