使用骨干模型和AngularJS

最近我在想Backbone.js和AngularJS之间的差异和相似之处。

在Backbone中我发现非常方便的是Backbone-Models和Backbone-Collections。 您只需设置urlRoot,然后通过Ajax与后端服务器通信基本上可以工作。

在AngularJS应用程序中只能使用骨干模型和集合吗? 因此,我们将拥有与AngularJS双向数据绑定的最佳方式,并通过骨干模型和集合方便地访问服务器端(或其他存储选项)。

一个快速的互联网search没有提出任何网站暗示这种使用情况。 所有资源要么谈论使用一个或另一个框架。

有人有与AngularJS使用骨干模型或集合的经验。 他们不是很好地互补吗? 我缺less什么东西吗?

例如上面的工作绑定… http://jsbin.com/ivumuz/2/edit

它演示了使用AngularJS处理Backbone模型的方法。 但是setter / getters连接会更好。

有一个类似的想法,想出了这个想法:添加只是一个getter和setter永远的模型属性。

Backbone.ngModel = Backbone.Model.extend({ initialize: function (opt) { _.each(opt, function (value, key) { Object.defineProperty(this, key, { get: function () { return this.get(key) }, set: function (value) { this.set(key, value); }, enumerable: true, configurable: true }); }, this); } }); 

看小提琴: http : //jsfiddle.net/HszLj/

我想知道如果有人也这样做了。 在我最近的/第一个angular度的应用程序中,我发现Angular在模型和集合方面非常缺乏(除非我错过了某些东西!)。 当然,您可以使用$ http或$ resource从服务器获取数据,但是如果要将自定义方法/属性添加到您的模型或集合,该怎么办? 例如,假设你有一系列汽车,并且你想计算总成本。 像这样的东西:

使用Backbone集合,这将非常容易实现:

 carCollection.getTotalCost() 

但是在Angular中,你可能必须把你的自定义方法包装在一个服务中,并将你的集合传递给它,如下所示:

 carCollectionService.getTotalCost(carCollection) 

我喜欢Backbone方法,因为它在我看来更清洁。 获取2路数据绑定是棘手的。 看看这个JSBin的例子。

http://jsbin.com/ovowav/1/edit

在编辑数字时,collection.totalCost不会更新,因为car.cost属性没有通过model.set()进行设置。

相反,我基本上使用自己的构造函数/“类”模型和集合,从Backbone.Model和Backbone.Collection复制骨干的API的子集,并修改我的自定义构造函数/类,以便它可以与Angular的数据绑定。

试着看看restangular 。

我没有在任何地方实施,但几天前我看到了一个谈话。 它似乎以一种有angular度的方式解决了同样的问题。

video: http : //www.youtube.com/watch?v = eGrpnt2VQ3s

有效的问题是肯定的。

很多与当前$资源实施的限制,其中有一些像Backbone.Collection一样的内部收集pipe理。 写了我自己的收集/资源pipe理层的angular度(使用$ http,而不是$资源),现在我看到,如果我可以replace骨干收集和模型的大部分样板内部。

到目前为止,获取和添加部分是完美无瑕的并且节省了代码,但是将这些主干模型(或者其中的属性)绑定到用于编辑的input的ng模型还没有工作。

@ericclemmons(github)做了同样的事情,并得到了两个结婚 – 我会问他,让我的testing工作,并张贴结论…

我在想,

这是用例:

salesforce mobile sdk(混合)具有一个称为smartstore / smartsync的function,该function需要骨干模型/集合,将其保存到本地存储以供离线访问。

你猜对了,我们希望使用angularjs作为混合应用程序的其余部分。

有效的问题。

-Sree

你应该在这里parsingangularJS样板文件。 parsing是骨干,但不完全是主干。 那就在那里开始我的一个angularJS backboneJS项目的想法