我有一个简单的应用程序,可从外部API检索记录并显示值(“天”)。可以通过简单的操作将日期值传递到组件中来增加日期值。我的应用程序正在正确检索记录,并将其成功传递给组件。但是一旦它增加了值,我就找不到找出将记录save
回到外部API的最佳方法。
我的route
像这样获取对象:
export default Route.extend({
model() {
return this.get('store').findRecord('world', '5cb0f8bd3b74cf22b75e1a37', { reload: true });
},
})
这是我的model
:
import Model from 'ember-data/model';
import DS from 'ember-data';
const { attr } = DS;
export default Model.extend({
day: attr('Number'),
});
在我的模板中,日期值通过以下方式映射到我的组件:
<Wait @day={{model.day}}></Wait>
我的组件有一个按钮,它调用如下操作:
<button {{action "incrementDay"}} class="btn btn-default" aria-hidden="true">Wait</button>
最后,这是我的component
:
import Component from '@ember/component';
import { inject as service } from '@ember/service';
export default Component.extend({
router: service(),
store: Ember.inject.service(),
actions: {
incrementDay() {
this.day++;
console.log(this.day);
}
}
});
每次我按下按钮时,控制台都会成功输出递增的数字,但是我不确定如何将更改保存回API。将更改后的数据向API发出PUT请求的最佳方法是什么?
答案 0 :(得分:2)
您可能希望将整个模型传递给组件。像这样:
<Wait @someBetterName={{@model}} />
(顺便说一句,您可能希望模型成为事物的哈希,以便可以为事物使用更多规范名称)
async model() {
let myModelA = await this.store...
// ...
return {
modelA: myModelA,
modelB: myModelB,
}
}
但是在“等待”中,您可以执行以下操作:
actions:{
async incrementDay() {
let day = this.someBetterName.day;
this.someBetterName.set('day', day + 1);
await this.someBetterName.save();
console.log('saved!')
}
}