现在还在尝试使用FixtureAdapter构建一个使用ember-model和hasMany关系的发票应用程序。当我尝试创建一个新的发票记录时,我得到一个没有错误的新发票,但根本没有ID(它是未定义的),我应该处理id创建服务器端? :/当我尝试在任何发票中创建新项目(发票包含多个项目)时,在调用保存时我会收到错误Èmber.Adapter must implement createRecord
感谢您的帮助,在这里找不到答案。
<script type="text/x-handlebars" data-template-name="factures">
{{#each}}
<ul>
<li>{{#link-to 'facture' this}}
{{#if id}}
#{{id}}:{{title}}
{{else}}
#undefined:{{title}}
{{/if}}
{{/link-to}}</li>
</ul>
{{/each}}
<button {{ action 'newInvoice' }}>New Invoice using create() then save()</button>
<hr/>
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="facture">
<h2>Items for {{title}}</h2>
{{#each items}}
<ul>
<li>{{desc}}</li>
</ul>
{{/each}}
<button {{ action 'newItem' }}>New Item using create() then save()</button>
</script>
App.FactureController = Ember.ObjectController.extend({
actions: {
newItem: function(){
var items = this.get('model').get('items');
items.create({desc:"New Item"});
items.save();
}
}
});
App.FacturesController = Ember.ArrayController.extend({
actions: {
newInvoice: function(){
var facture = App.Facture.create({title:"New Invoice"}),
comment = facture.get('items').create({desc:"Sample Item"});
facture.save();
}
}
});
答案 0 :(得分:1)
是的,通常客户端不知道下一个id应该是什么,所以当你创建一个模型并保存它时,服务器应该返回一个id来更新模型。如果你想要你可以随机生成一个,但这可能不是真实生活场景(除非模型只存在于客户端)
您遇到的问题是当您尝试保存并且项目不知道如何。您需要定义一个适用于Item模型的适配器,以便它知道保存该模型类型的位置和方式。