我的脚已经湿了一点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模型在哪里发挥作用。它在这里根本没有被使用,我想知道如何正确使用它。
答案 0 :(得分: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
});
}