Ember.js emberjs无法克隆未实现Ember.Copyable的Ember.Object
我使用的是ember 1.3.1和ember data 1.0.0-beta.5。在创建新模式时,我遇到以下错误 断言失败:无法克隆未实现Ember.Copyable的Ember.Object 下面是我的模型代码 App.myModel=DS.Model.extend({ 名称:DS.attr('string'), 年龄:DS.attr('string') }); 在“创建路线模型”功能中 返回Em.Object.create({}) 最后在保存时,我做了如下操作 this.store.createRecord('property',this.get('model') 尽管有错误,我的后端服务被成功调用,新模型被保存 请导游Ember.js emberjs无法克隆未实现Ember.Copyable的Ember.Object,ember.js,ember-data,Ember.js,Ember Data,我使用的是ember 1.3.1和ember data 1.0.0-beta.5。在创建新模式时,我遇到以下错误 断言失败:无法克隆未实现Ember.Copyable的Ember.Object 下面是我的模型代码 App.myModel=DS.Model.extend({ 名称:DS.attr('string'), 年龄:DS.attr('string') }); 在“创建路线模型”功能中 返回Em.Object.create({}) 最后在保存时,我做了如下操作 this.store.crea
谢谢我对余烬还是一个新手,仍然在努力解决迁移到新版本的余烬和余烬数据时出现的所有问题,但是 一方面,我认为您在最后一个代码块中有一个错误,应该是:
this.store.createRecord('myModel', this.get('model'));
// myModel instead of property
但另一方面,我认为这不是问题所在:-/
无论如何,请尝试在此处查看(并比较)余烬数据的更改:
还有这个或类似的问题
希望有帮助
J.我有同样的问题,我通过以下操作解决了:
在route replace的模型功能中
return Em.Object.create({});
与
保存和替换
this.store.createRecord('myModel', this.get('model'));
与
我在学习Ember时遇到了这个问题。接受的答案有效,但它首先在存储中创建一个新的空记录。这在我的应用程序中是不需要的,因为它在我的视图中显示空记录 我的解决方案 路由器
App.ItemsNewRoute = Ember.Route.extend({
setupController: function(controller, model) {
controller.set('content', {});
}
});
App.ItemsNewController = Ember.ObjectController.extend({
actions: {
save: function() {
this.store.createRecord('item', {
title: this.get('newTitle'),
category: this.get('newCategory')
}).save();
this.transitionToRoute('items');
}
}
});
控制器
App.ItemsNewRoute = Ember.Route.extend({
setupController: function(controller, model) {
controller.set('content', {});
}
});
App.ItemsNewController = Ember.ObjectController.extend({
actions: {
save: function() {
this.store.createRecord('item', {
title: this.get('newTitle'),
category: this.get('newCategory')
}).save();
this.transitionToRoute('items');
}
}
});
模板
<script type="text/x-handlebars" data-template-name="items">
<ul class="list-group">
{{#each}}
<li class="list-group-item">{{title}} - {{category}}</li>
{{/each}}
{{outlet}}
<li class="list-group-item">{{#link-to "items.new"}}Add{{/link-to}}</li>
</ul>
</script>
<script type="text/x-handlebars" data-template-name="items/new">
<li class="list-group-item">
{{input class="form-control" value=newTitle placeholder="Title"}}
{{input class="form-control" value=newCategory placeholder="Category"}}
<button class="btn btn-default" {{action "save"}}>Save</button>
</li>
</script>
{{{#各}
- {{title}}-{{category}
{{/每个}}
{{outlet}}
- {{{#link to“items.new”}添加{{/link to}
{{input class=“form control”value=newTitle placeholder=“Title”}
{{input class=“form control”value=newCategory placeholder=“Category”}
拯救
为了完整起见,在@acidleaf所描述的场景中,这是ember核心团队在本视频中提供的Yehuda Katz
解决方案:
在从中返回要显示的资源列表的路由中(即资源StoriesRoute、PostsRoute等的复数版本),您将返回一个过滤列表,其中包含非新的列表:
model: function() {
this.store.find('myModel');
return this.store.filter('myModel',function(myModel){
return !myModel.get('isNew');
});
}
我试过你的方法。它可以工作,但在您实际输入内容之前,它会弄乱用户数(我使用的是用户模型)。这就像您有一个新的空记录这应该是
store.find()
的默认行为。如果我想包括新的模型,那么我应该明确地指定它。