backbone.js复杂模型
问题描述:
我正在构建一个web应用程序,使用backbone.js作为MVC框架。我正在努力设计我的模型。我有一个父/主对象,但它本质上相当复杂/嵌套,即超过50个属性和一些嵌套继续进行。我所挣扎的是:backbone.js复杂模型
我有类似:
{section1:{
key1:"value1",
key1:"value2"},
section2:{
key1:"value1",
key1:"value2"}
}
我应该扁平化的对象出像:
{section1_key1:"value1",
section1_key2:"value2",
section2_key1:"value1",
section2_key2:"value2"
}
,或者我应该:
- 使用骨干嵌套插件并传入大型嵌套JSON对象?
- 或为每个部分创建单独的模型,并以某种方式嵌套在父模型 中。
- 或简单地创建的子对象的模型,而不必担心嵌套,并添加一些类型的引用
建议表示赞赏。
答
我现在正在为此付出努力。
我倾向于选择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
处理脱套和创建和添加项目的集合,然后存储作为该模型的属性。
+0
在我的情况下,尽管大多数子对象/模型将是他们的父母一对一的关系。嵌套的原因是考虑属性的剪切数量(50+)来降低复杂性。 – whyvez 2012-02-04 04:19:02
此外,这从常见问题解答:http://documentcloud.github.com/backbone/#FAQ-nested – tkone 2012-02-03 21:56:40