我有一个ember应用程序使用的REST API。 这是列出模型的.hbs。我可以用" save"来提供新的元素。动作,每个项目都有一个"删除"动作。
{{ input value=name }}
{{ input value=value }}
<button {{ action "save" this }}>Save</button>
<table class="table">
{{#each item in model}}
<tr><td>{{item.name}}</td><td>{{float2 item.value}}</td><td><button {{ action "delete" item}}>delete</button></td></tr>
{{/each}}
</table>
到目前为止一切正常。如果我插入(保存)一个新元素的问题,我不能删除&#34;它,它有id:null,并且对api的请求在URL的末尾没有id。 (虽然在客户端,该项目将从列表中删除)
这是控制器的动作:
actions: {
save: function (record) {
var vat = this.store.createRecord('vat',{
name: this.get('name'),
value: parseFloat(this.get('value'))
});
vat.save();
},
delete: function(record){
console.log(record);
record.deleteRecord();
record.save();;
}
}
我的猜测是在插入后API没有正确的响应,并且ember-data不知道新项目的id。 (也许我错了)什么责任(JSON结构)期望RESTAdapter,使用哪个状态代码?
答案 0 :(得分:1)
在您的情况下,来自服务器的响应应具有200或201状态代码,正文应如下所示
{
"vat": {
"id": 1,
"name": "Name",
"value": 10.5
}
}
您还可以在RESTAdapter中覆盖normalize
函数来调整服务器响应的格式。