Backbone.js 将主干模型与AngularJS结合使用
最近我在思考Backbone.js和AngularJS之间的异同 我发现主干中真正方便的是主干模型和主干集合。您只需设置urlRoot,然后通过Ajax与后端服务器的通信基本上可以正常工作 难道不能在AngularJS应用程序中只使用主干模型和集合吗? 因此,我们可以利用AngularJS实现双向数据绑定,并通过主干模型和集合方便地访问服务器端(或其他存储选项) 快速的互联网搜索没有发现任何建议这种使用场景的网站。 所有资源都会讨论使用一个或另一个框架 是否有人有使用AngularJS的主干模型或集合的经验。Backbone.js 将主干模型与AngularJS结合使用,backbone.js,angularjs,Backbone.js,Angularjs,最近我在思考Backbone.js和AngularJS之间的异同 我发现主干中真正方便的是主干模型和主干集合。您只需设置urlRoot,然后通过Ajax与后端服务器的通信基本上可以正常工作 难道不能在AngularJS应用程序中只使用主干模型和集合吗? 因此,我们可以利用AngularJS实现双向数据绑定,并通过主干模型和集合方便地访问服务器端(或其他存储选项) 快速的互联网搜索没有发现任何建议这种使用场景的网站。 所有资源都会讨论使用一个或另一个框架 是否有人有使用AngularJS的主干模型
它们不是很好地互补吗?我少了什么吗?这是一个肯定有效的问题 $resource的当前实现存在很多限制,其中包括没有像Backbone.collection这样的内部集合管理。在angular中编写了我自己的集合/资源管理层(使用$http,而不是$resource)之后,我现在正在考虑是否可以用许多样板内部构件替换主干集合和模型 到目前为止,获取和添加部分是完美的,可以保存代码,但是将这些主干模型(或者其中的属性)绑定到输入上的ng模型以进行编辑还不起作用
@Ericlemmons(github)也做了同样的事情,让两人顺利结婚——我会问他,让我的测试开始,然后公布结论……我想知道是否有人也这么做过。在我最新/第一个angular应用程序中,我发现angular在模型和集合中非常缺乏(除非我遗漏了一些东西!)。当然可以使用$http或$resource从服务器提取数据,但是如果要向模型或集合添加自定义方法/属性,该怎么办。例如,假设你有一系列汽车,你想计算总成本。大概是这样的:
carCollectionService.getTotalCost(carCollection)
使用主干集合,这将非常容易实现:
carCollection.getTotalCost()
但在Angular中,您可能必须将自定义方法包装到服务中,并将集合传递给它,如下所示:
carCollectionService.getTotalCost(carCollection)
我喜欢主干方法,因为在我看来它读起来更干净。不过,获取双向数据绑定很棘手。查看这个JSBin示例
编辑数字时,collection.totalCost不会更新,因为未通过model.set()设置car.cost属性
相反,我基本上使用我自己的构造函数/“类”作为模型和集合,从Backbone.Model和Backbone.Collection复制了Backbone的API的子集,并修改了我的自定义构造函数/类,使其能够与Angular的数据绑定一起工作。上面的一个工作绑定示例。。。 它演示了一种使用AngularJS处理主干模型的方法。 但是setters/getter连接会更好。试试看 我还没有在任何地方实施它,但几天前我看到了一个关于它的讨论。它似乎从一个角度解决了同样的问题
视频:有一个类似的想法,并想出了这个想法: 只添加一个getter和setter for ever模型属性
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);
}
});
看小提琴:我也在想同样的问题- 这是一个用例: salesforce mobile sdk(hybrid)有一个名为smartstore/smartsync的功能,该功能需要主干型号/集合,并将其保存到本地存储以供脱机访问 您猜对了,我们想在混合应用程序的其余部分使用angularjs 正确的问题
-Sree您应该查看带有parse的angularJS样板文件。解析类似于主干,但不完全是主干。这就是我开始构思angularJS backboneJS项目的地方为什么要使用主干模型,angular中有$resource,可以非常轻松地使用RESTTry直接与服务器端模型集成,并使用主干来处理模型和集合。由于下划线支持,它非常容易上瘾。我认为这回ng的一个主要问题是getter和Setters的事件问题这是怎么结束的?你成功了吗?请介绍一下这个有趣话题的最新情况。与主干网的模型和集合相比,Angular与restful后端的接口能力较差。您在这方面取得了进展吗?结果如何?在这方面有进展吗?如果这能起作用我想这是对skaterdav85的回答Sweet example@Tenphi的回应我想这就是你所面临问题的答案:)根据你与谁交谈,服务的重点是抽象出处理数据的逻辑。然后,控制器负责装饰视图。在本例中,您需要将解析、排序和转换数据的逻辑放入该控制器。