2012-03-09 3 views
1

Я получаю мокрые ноги немного Ember.js. Я пытаюсь создать супер простую форму, которая позволяет отправлять запрос.Ember.js 'Объекты' и 'ArrayController'

App = Ember.Application.create(); 

App.QueryFormView = Ember.View.extend({ 
    submitQuery: function() { 
     App.queries.pushObject({ 
      firstName: this.get('name'), 
      message: this.get('message') 
     }); 

     App.queries.save(); 
    } 
}); 

// Model 
App.Query = Ember.Object.extend(); 

// Collection 
App.queries = Ember.ArrayController.create({ 
    content: [], 
    save: function() { 
     $.post('api/query', JSON.stringify(this.toArray()), function (data) { 
      // Queries saved 
     }); 
    } 
}); 

Каждый раз, когда формируют запрос он представил, я нажимаю объект в queriesArrayController, а затем запустить сохранить.

Тем не менее, я изо всех сил пытаюсь понять, где вступает в игру Ember.Object. Он вообще не используется, и я хотел бы знать, как правильно его использовать.

ответ

3

У вас нет использовать Ember.Object. Если вы никогда не хотите делать какие-либо привязки, имеете рассчитанные свойства или наблюдаете за изменениями свойств, нет необходимости.

Однако, если вы хотите сделать какой-либо из тех вещей, которые вы бы изменить код, как это:

документа ожидаемых полей в модели.

// Model 
App.Query = Ember.Object.extend({ 
    firstName: null, // just to indicate what props you're expecting 
    lastName: null 
}); 

Создайте объект модели вместо анонимного объекта.

submitQuery: function() { 
    App.queries.pushObject(App.Query.create({ // .create() here 
     firstName: this.get('name'), 
     message: this.get('message') 
    }); 

    App.queries.save(); 
} 

И теперь для большого недостатка. JSON.stringify() будет сериализовать внутренние вещи, которые вам не нужны. Поэтому каждый объект, отправленный по проводу, должен быть упрощен до свойств, которые вы хотите в первую очередь. Помощь в этом можно найти здесь: Reflection on EmberJS objects? How to find a list of property keys without knowing the keys in advance

save: function() { 

    var obj = buildSimpleObject(this); // implements this somehow 

    $.post('api/query', JSON.stringify(obj.toArray()), function (data) { 
     // Queries saved 
    }); 
} 
Смежные вопросы