guides ember ember.js ember-data

ember.js - guides - emberjs No se puede clonar un objeto Ember.Object que no implementa Ember.Copyable



ember js guides (4)

En aras de la integridad, en el escenario descrito por @acidleaf, esta es la solución ofrecida por Yehuda Katz del equipo central de brasas en este video:

Fuera del menú: Construyendo un lado del cliente con Ember y Rails - Yehuda Katz @ Rails Israel 2013

En la ruta desde la que está devolviendo una lista de recursos para mostrar (es decir, la versión plural del recurso StoriesRoute, PostsRoute, etc.), devolverá una lista filtrada que contiene aquellos que no son nuevos:

model: function() { this.store.find(''myModel''); return this.store.filter(''myModel'',function(myModel){ return !myModel.get(''isNew''); }); }

Estoy usando ember 1.3.1 y ember-data 1.0.0-beta.5. Al crear un nuevo modo me sale el siguiente error

Fallo de aserción: no se puede clonar un objeto Ember.Object que no implementa Ember.Copyable

El siguiente es mi código de modelo

App.myModel = DS.Model.extend ({name: DS.attr (''string''), age: DS.attr (''string'')});

En mi función crear modelo de ruta

devuelve Em.Object.create ({});

y finalmente en guardar lo hago siguiendo

this.store.createRecord (''propiedad'', this.get (''modelo''));

Aunque a pesar del error, mi servicio de fondo se llama con éxito y se guarda el nuevo modelo.

Por favor guia

Gracias


Me he topado con este problema mientras aprendía Ember. La respuesta aceptada funciona, pero primero crea un nuevo registro vacío en la tienda. Esto no fue deseado en mi aplicación ya que muestra el registro vacío en mi vista.

Mi solución

Enrutador

App.ItemsNewRoute = Ember.Route.extend({ setupController: function(controller, model) { controller.set(''content'', {}); } });

Controlador

App.ItemsNewController = Ember.ObjectController.extend({ actions: { save: function() { this.store.createRecord(''item'', { title: this.get(''newTitle''), category: this.get(''newCategory'') }).save(); this.transitionToRoute(''items''); } } });

Modelo

<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>


Soy bastante nuevo en Ember y todavía estoy tratando de detectar todos los problemas causados ​​al migrar a nuevas versiones de Ember y Ember Data, pero ...

Por un lado, creo que tienes un error en el último bloque de código y que debería ser:

this.store.createRecord(''myModel'', this.get(''model'')); // myModel instead of property

Pero por otro lado, no creo que este sea el problema: - /

de todos modos, intente buscar (y comparar) los cambios para los datos de Ember aquí: https://github.com/emberjs/data/blob/master/TRANSITION.md y también en este http://discuss.emberjs.com/t/createrecord-using-this-get-model-throws-an-error/3968 o similar

¡Espero eso ayude!

J.


Tuve el mismo problema que solucioné haciendo lo siguiente:
En el modelo de función de la ruta sustituir.

return Em.Object.create({});

con

return this.store.createRecord(''myModel'');

y en guardar reemplazar

this.store.createRecord(''myModel'', this.get(''model''));

con

this.get(''model'').save();