最近我在考虑Backbone.js和AngularJS之间的差异和相似之处。
我在Backbone中发现非常方便的是Backbone-Models和Backbone-Collections。你只需要设置urlRoot,然后通过Ajax与后端服务器的通信基本上可以工作。
是否应该只使用AngularJS应用程序中的Backbone-Models和Collections? 因此,我们将充分利用AngularJS进行双向数据绑定,并通过Backbone-Models和Collections方便地访问服务器端(或其他存储选项)。
快速的互联网搜索没有出现任何提示此使用场景的网站。 所有资源都要么谈论使用一个或另一个框架。
是否有人使用AngularJS使用Backbone-Models或Collections。 他们不会很好地相互补充吗?我缺少什么吗?
答案 0 :(得分:11)
例如上面的工作绑定...... http://jsbin.com/ivumuz/2/edit
它展示了使用AngularJS解决Backbone模型的方法。 但是setter / getters连接会更好。
答案 1 :(得分:9)
有一个类似的想法,想出了这个想法: 只为模型属性添加一个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/
答案 2 :(得分:7)
我想知道是否还有人这样做过。在我最近的/第一个有角度的应用程序中,我发现Angular在模型和集合中非常缺乏(除非我当然缺少一些东西!)。当然,您可以使用$ http或$ resource从服务器提取数据,但是如果要向模型或集合添加自定义方法/属性,该怎么办?例如,假设您有一系列汽车,并且您想要计算总成本。像这样:
使用Backbone Collection,这很容易实现:
carCollection.getTotalCost()
但在Angular中,您可能需要将自定义方法包装在服务中并将集合传递给它,如下所示:
carCollectionService.getTotalCost(carCollection)
我喜欢Backbone方法,因为在我看来它更清晰。获得双向数据绑定虽然很棘手。看看这个JSBin示例。
http://jsbin.com/ovowav/1/edit
编辑数字时,collection.totalCost不会更新,因为car.cost属性未通过model.set()设置。
相反,我基本上使用自己的构造函数/“类”用于模型和集合,从Backbone.Model和Backbone.Collection复制Backbone API的子集,并修改我的自定义构造函数/类,以便它可以使用Angular的数据结合。
答案 3 :(得分:7)
尝试查看restangular。
我没有在任何地方实现它,但几天前我看到了它的谈话。它似乎以有角度的方式解决了同样的问题。
答案 4 :(得分:4)
确实有效的问题。
当前实现$ resource的许多限制,其中没有像Backbone.Collection这样的内部集合管理。在使用angular(使用$ http,而不是$ resource)编写我自己的集合/资源管理层之后,我现在看到我是否可以替换主干集合和模型的大部分样板内部。
到目前为止,获取和添加部分是完美无缺的并且可以保存代码,但是将这些主干模型(或者内部的属性)绑定到输入上的ng模型以进行编辑仍然无法正常工作。
@ericclemmons(github)也做了同样的事情并让两人结婚 - 我会问他,让我的测试工作,然后发表结论......
答案 5 :(得分:2)
我想知道同样的事情 -
这是用例:
salesforce mobile sdk(hybrid)有一项名为smartstore / smartsync的功能,它需要主干模型/集合,它将保存到本地存储以供离线访问。
你猜对了,我们希望将angularjs用于混合应用程序的其余部分。
有效问题。
-Sree
答案 6 :(得分:2)
您应该使用解析here查看angularJS样板文件。 Parse是主干,但不完全是主干。多数民众赞成我开始我的angularJS backboneJS项目的想法