编辑
自从我写了这篇文章后,我就放弃了 Ember,转而使用 Angular 来开发我的 SPA 数据应用程序。这背后的主要原因是Ember Set
您应该使用 Ember 来连接其所有绑定内部。
不幸的是,这与 Jaydata 或 Breeze 等大多数库不兼容。至少在您希望对实体服务进行更改/保存时不会。
Jaydata 和 Breeze 都使用 propertyChanged 属性来监控实体的更改,Ember 会阻止这些更改并出现You should use Ember Set
错误。
我可能已经编写了某种适配器来克服这个问题,但实际上我没有时间,我使用一个库“Ember”来让我的生活更轻松......不要对数据服务查询等基础知识感到头疼。
所以……我真的很喜欢 Ember,但很遗憾,只要他们不增强“Ember Data”或彻底改变 Ember Set 政策,我就无法使用它!
基本上,如果您打算使用数据库(JayData、Breeze)来更新后端......
不要使用余烬!
原来的
我(很快!)看了一眼 ember-data 并没有真正感到兴奋!标准 REST 服务看起来很有希望,恕我直言,这不是 WCF 的情况。
我最终为此使用了 JayData,我必须说它与 Ember 集成得非常好。
这是一个快速的片段,可以帮助您:
//Instanciate the Ember APP
App = Ember.Application.create();
//Tell the APP to initialize but to wait before launching
App.deferReadiness();
//Setup your JayData Store
//Entities.EntityModel was generated by JaySvcUtil
App.myStore = new Entities.EntityModel({
name: 'oData',
oDataServiceHost: <YOUR_WCF_ENDPOINT_URL>
});
//Create your route and populate model data
App.IndexRoute = Ember.Route.extend({
model: function () {
//This passes the toArray() promise to the model
return App.myStore.People.orderBy('it.Name').toArray();
}
});
//When JayData Store is ready, Fire the App
App.myStore.onReady(function () {
App.advanceReadiness();
});
Ember Route Model 实际上处理了 JayData 给出的承诺,它允许我们通过查询。请参阅:http ://emberjs.com/guides/routing/asynchronous-routing/#toc_the-router-pauses-for-promises