Ember-модель create() не создает идентификатор и адаптер должен реализовывать "createRecord"
Все еще пытаюсь создать приложение для выставления счетов, используя отношения ember-model и hasMany, используя FixtureAdapter. Когда я пытаюсь создать новую запись счета, я получаю новый счет без ошибок, но без идентификатора вообще (он не определен), я должен обрабатывать создание идентификатора на стороне сервера?:/ и когда я пытаюсь в любом счете-фактуре создать новые элементы (счет-фактура hasMany элементов), при вызове сохранения я получаю ошибку Èmber.Adapter must implement createRecord
Спасибо за любую помощь, не мог найти ответ здесь.
Упрощенная версия, воспроизводящая проблему на JSBIN
Index.html
<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();
}
}
});
1 ответ
Да, обычно клиентская сторона не имеет представления о том, каким должен быть следующий идентификатор, поэтому при создании модели и ее сохранении сервер должен возвращать идентификатор для обновления модели. Если вы хотите, вы можете сгенерировать случайным образом один, но это, вероятно, не сценарий реальной жизни (если только модель никогда не живет на стороне клиента)
Проблема, с которой вы сталкиваетесь, заключается в том, что вы пытаетесь сохранить данные и не знаете как. Вам нужно определить адаптер для использования в модели Item, чтобы он знал, где и как сохранить этот тип модели.