4

我期待尝试,第一次,一个JavaScript MVC框架像KnockoutBackbone.jsSpineJavaScriptMVC哪个Javascript MVC框架最好处理关系数据?

我已经开始看一些文件可用于这些框架和我无法找到他们如何处理关系数据的例子。他们中的大多数使用ToDo列表作为示例。 ToDo列表很好,但它不包含关系数据。也许一个更好的例子是用两种配方和成分的模型食谱:

var Recipe = function(){ 
    this.name = "Pizza"; 
    this.description = "A delicious baked, flat, disc-shaped bread topped with tomato sauce and cheese."; 
} 

var Ingredient = function(){ 
    this.name = "Tomato sauce" 
} 

var IngredientToRecipe = function(){ 
    this.recipe = null; 
    this.ingredient = null; 
    this.quantity; 
} 

对于我迄今所看到的模型实例似乎并没有处理人际关系的问题:外键,身份证世代等等。上面的例子是多对多的关系,但即使对于一对多关系,我也会很满意。

我真的很喜欢这些框架提供的东西:

  • 更改模型自动更新视图(即DOM)
  • 自动更新服务器上的模型时,它改变
  • 明确的组织代码
  • 等...

但是,我想在其框架最好HANDL建议es模型之间的关系,并举例说明了这一点。

谢谢!

回答

1

Sproutcore有一个客户端数据存储,它允许您将toOne,toMany和ManyToMany关系中的不同模型对象相互关联。实际上,您可以针对商店编写查询,并在数据更改时自动更新。同样,如果您执行更新并更改模型对象,则附加到该模型的任何视图(通过控制器)都会自动更新)。此外,SC具有嵌套存储功能,可以让您无缝地放弃更改,以用于“保存或取消”类型的工作流程。

http://guides.sproutcore.com/records.html

+0

SproutCore好像有点重 – Adam

+0

@adam,你是什么意思?它是一个全功能的应用程序框架,所以它有很多东西。我认为他们正试图让Sproutcore2下降到50kb ...... – hvgotcodes

+0

这实际上来自使用ember数据的ember.js。 Sproutcore只是在它之上构建了一个ui ...因此,如果该数据模型听起来不错,请查看ember框架。一旦你超越了学习曲线,这真是太棒了。 –

0

我不认为你正在寻找MVC本身做的,我想你正在寻找一些具有良好的“M”。所以你可能在寻找类似于我们的Ext JS模型关联的东西。 (Ext JS当然是一个完整的框架,所以如果你想在jQuery之上撒一些东西,它不会适合你)。

这里是models in Ext JS 4的文档,这里是top level guide for Ext JS 4 MVC

2

尽管Backbone(intentionally)非常优雅地支持包含其他模型/集合的模型,但Backbone-relational增加了对它的支持并且工作得很好。查看他们的文档。