Данные Ember по-прежнему не соответствуют версии 1.0, и поэтому я решил использовать Ember без моделей данных.
У меня есть свои собственные модели, и они создаются функцией маршрутной модели.
Однако сохранение состояния между объектами frontend и объектами backend является кошмаром. Особенно, когда один маршрут использует другие модели маршрутов.
- Как это может быть достигнуто, следует ли написать собственный метод поиска на складе и модели?
- Должен ли я использовать данные Ember (хотя это не в версии 1.0?), возможно, ETA на Ember Data 1.0?
- написать код для обновления моделей на интерфейсе каждый раз, когда я меняю модель?
- Другой метод?
Я делаю лучшие практики, или я должен делать это по-другому? Я чувствую, что без использования 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()
})