我在todo.js
中定义了一个名为app/models
的模型,如下所示:
export default DS.Model.extend({
title: DS.attr('string'),
created_at: DS.attr('date'),
updated_at: DS.attr('date'),
is_deleted: DS.attr('boolean'),
is_done: DS.attr('boolean')
});
假设我不想使用ember-data
&我只是想像这样使用普通的ajax
:
export default Ember.Route.extend({
model() {
return Ember.$.getJSON('http://localhost:3001/todo').then((data) => {
// How would I load the data into the model here?
});
}
});
如何将成功的ajax
调用中的数据加载到模型中?
我已经定义了一个组件来显示这样的待办事项:
<ul>
{{#each model as |todo index|}}
{{#link-to 'todo' todo.id}}<li>{{todo.title}}</li>{{/link-to}}
{{/each}}
</ul>
这是router.js
:
Router.map(function() {
this.route('todos');
this.route('todo', { path: '/todo/:todo_id' })
});
答案 0 :(得分:0)
您可以使用pushPayload method和peekAll。
export default Ember.Route.extend({
model() {
return Ember.$.getJSON('http://localhost:3001/todo').then((data) => {
this.get('store').pushPayload('todo',data);
return this.get('store').peekAll('todo');
});
}
});
答案 1 :(得分:0)
如果您不想使用余烬数据,请不要使用它:
export default Ember.Route.extend({
model() {
return Ember.RSVP.resolve(Ember.$.getJSON('http://localhost:3001/todo'));
}
});
这将按预期工作,并允许您访问model
下的返回JSON。因此,对于您的模板,请确保http://localhost:3001/todo
发送如下的JSON:
[{
"id": "a",
"title": "foo"
}]
答案 2 :(得分:0)
export default Ember.Route.extend({
model() {
return Ember.$.getJSON('http://localhost:3001/todo').then((data) => {
return Ember.Object.create(data);
});
}
});