Ember.js emberjs无法克隆未实现Ember.Copyable的Ember.Object

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

我使用的是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')

尽管有错误,我的后端服务被成功调用,新模型被保存

请导游


谢谢

我对余烬还是一个新手,仍然在努力解决迁移到新版本的余烬和余烬数据时出现的所有问题,但是

一方面,我认为您在最后一个代码块中有一个错误,应该是:

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()
    的默认行为。如果我想包括新的模型,那么我应该明确地指定它。