Ember 数据仍然不是 1.0 版,因此我决定使用 Ember 而不使用数据模型。
我有自己的模型,这些模型是由路由模型函数创建的。
然而,在前端对象和后端对象之间维护状态是一场噩梦。特别是当一条路线使用另一条路线模型时。
- 这如何实现,我应该编写自己的商店和模型查找方法吗?
- 我应该使用 Ember Data(即使它不是 1.0 版?)也许是 Ember Data 1.0 的 ETA ?
- 每次更改模型时编写代码来更新前端的模型?
- 另一种方法?
我正在做的最佳实践还是我应该以不同的方式做?我的直觉是,如果不使用 Ember Data,我应该编写自己的商店。我很想得到你们中的一些人的反馈。
模型示例:
App.Person = Ember.Object.extend(App.Serializable,Em.Copyable,{
user_email : null //used in routing dynamic segements and as old email when making changes to email
,first_name: null
, last_name: null
, fullname : function () {
return this.first_name + ' ' + this.last_name;
}.property('first_name','last_name').cacheable()
};
App.Person.reopenClass({
createRecord: function(data) {
return App.Person.create({
user_email : data.email
, first_name: data.first_name
, last_name : data.last_name
}});
我如何加载类模型的示例:
App.UsersRoute = App.AuthenticatedRoute.extend( {
model : function () {
return new Ember.RSVP.Promise(function(resolve, reject) {
$.getJSON('/users').then(function(usersData) {
var userObjects = [];
usersData.forEach(function (data) {
userObjects.pushObject(App.Person.createRecord(data));
});
resolve( userObjects);
},function(error) {
reject(error);
});
})
},
子路由使用模型:
App.UsersAvailableRoute = App.AuthenticatedRoute.extend( {
model : function () {
return {
allUsers : Ember.ArrayController.create({
content : this.modelFor('users').filter( function (user) {
return user.availablity === 100
}),
我如何在控制器中更新模型的示例:
App.UsersAvailableController = Ember.ArrayController.extend({
needs : ['users']
,applyPersonAssign : function (person,need,project) {
need.set('allocated',person);
var updateObject = Ember.copy(project,true);
if (Ember.isEmpty(need.get('inProject'))) {
updateObject.projectNeeds.pushObject(need);
}
return $.ajax({
url: '/projects/' + updateObject.get('codename'),
"type": "PUT",
"dataType": "json",
data: updateObject.serialize()
})