Ember模型create()没有创建ID,适配器必须实现“;createRecord”;
Ember-model create() not creating an ID and adapter must implement "createRecord"
目前仍在尝试使用ember模型构建发票应用程序,并使用FixtureAdapter构建hasMany关系。当我试图创建一个新的发票记录时,我得到了一个没有错误的新发票,但根本没有ID(它是未定义的),我应该在服务器端处理ID创建吗?:/当我尝试在任何发票中创建新项目时(发票有许多项目),当调用save时,我得到错误Èmber.Adapter must implement createRecord
谢谢你的帮助,在这里找不到答案。
在JSBIN上重现问题的简化版本
索引.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();
}
}
});
是的,通常客户端不知道下一个id应该是什么,所以当您创建并保存模型时,服务器应该返回一个id来更新模型。如果你愿意,你可以随机生成一个,但这可能不是一个真实的场景(除非模型只存在于客户端)
你面临的问题是,当你尝试保存和项目时,它不知道如何保存。您需要定义一个用于Item模型的适配器,以便它知道在哪里/如何保存该模型类型。
http://emberjs.jsbin.com/eKibapI/7/edit
相关文章:
- RabbitMQ与通过网络的stomp适配器
- EmberJS-适用于各种模型的适配器动态名称空间
- Ember、JSONAPI适配器、JSONAPISerializer、findAll不可用
- 解析服务器中的mailgun模块(不是适配器)
- 如何通过ibmworklight中的sql适配器从db2中检索或显示html页面上的数据?android混合应用程序开发
- 本地存储适配器简介
- 如何在工作灯适配器中调用 WSDL
- ckeditor jquery适配器设置模板路径
- Worklight Javascript适配器:无法检索作为参数传递给适配器的数组值
- 在工作灯中的Http适配器中检索Lat和Long
- AngularJS+jQuery Mobile w/无适配器&禁用路由-仅用于UI样式
- Ember模型create()没有创建ID,适配器必须实现“;createRecord”;
- 在MobileFirst javascript适配器中使用xml输入调用DB存储过程
- 在AngularJS中使用jQuery移动适配器-应用jqmCompatMode false启用角度路由
- 错误:'历史记录.适配器'为null或不是对象
- 如何在Ember.js中禁用数据适配器以仅使用浏览器存储
- 调用 Worklight 适配器并将列表视图中的 JSON 数据显示为字符串
- Chrome WebRTC在浏览器更新时中断适配器.js
- 从 http 适配器过程读取响应
- 如何实现命令模式而不是使用适配器