我正在使用backbone.js作为MVC框架构建一个Web应用程序。我正在努力设计我的模型。我有一个父/主对象,但它本质上非常复杂/嵌套,即超过50个属性和一些嵌套。我正在努力的是:</ p>
我有类似的东西:
{section1:{
key1:"value1",
key1:"value2"},
section2:{
key1:"value1",
key1:"value2"}
}
我是否应该将对象展平为:
{section1_key1:"value1",
section1_key2:"value2",
section2_key1:"value1",
section2_key2:"value2"
}
或者我应该:
建议表示赞赏。
答案 0 :(得分:3)
我现在也在努力解决这个问题。
我倾向于选择2。
我将每个嵌套部分构建到单独的模型中,并在Python中创建类似于SQLObject的接口(或者实际上是任何ORM)
所以给出了一个简单的博客帖子:
var Tag = Backbone.Model.extend({
defaults: {
name: ''
},
validate: function(atts){
if(!atts.name || atts.name.length < 2){
return "You must provide a name that's longer than 2 characters";
}
}
});
var TagList = Backbone.Collection.extend({
model: Tag
})
var Entry = Backbone.Model.extend({
defaults: {
author: "Todd",
pub_date: new Date(),
content: "",
title: "",
tags: new TagList()
},
add_tag: function(tag){
var tag_collection = this.get('tags');
tag_collection.add({name: tag});
this.set({tags: tag_collection});
},
remove_tag: function(tag){
tag.destroy();
},
tags: function(){
return this.get('tags').models;
}
});
另一个想法是让initialize
处理去嵌套和创建项目并将其添加到集合中,然后将其存储为该模型上的属性。