Ember.js 'Объекты' и 'ArrayController' - PullRequest
1 голос
/ 10 марта 2012

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

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
        });
    }
});

Каждый раз, когда отправляется форма запроса, я помещаю объект в queries ArrayController, а затем запускаюsave.

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

1 Ответ

3 голосов
/ 10 марта 2012

У вас нет для использования 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() будет сериализовать внутренние вещи, которые вам не нужны.Таким образом, каждый объект, отправляемый по проводу, должен быть сначала упрощен до свойств, которые вы хотите.Помощь в этом можно найти здесь: Отражение на объектах EmberJS?Как найти список ключей свойств, не зная заранее ключей

save: function () {

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

    $.post('api/query', JSON.stringify(obj.toArray()), function (data) {
        // Queries saved
    });
}
...