ember.js ember-data ember-old-router

ember.js - Ember Uncaught Error: assertion failed: Vaciar una vista en el estado inBuffer



ember-data ember-old-router (2)

un poco tarde, supongo ... pero lo tengo para trabajar aquí: http://plnkr.co/edit/hDCT4Qy1h5aE6GjM76qp

No cambió la lógica, pero donde se llama

Modifiqué tu enrutador así:

Router: Ember.Router.extend({ root: Ember.Route.extend({ index: Ember.Route.extend({ route: "/", connectOutlets: function(router) { var person; router.set(''router.applicationController.currentPerson'', App.Person.find(657)); } }) }) })

Y creó un ApplicationController:

ApplicationController: Em.Controller.extend({ currentPerson: null, currentPersonLoaded: function() { this.connectOutlet("things", this.get("currentPerson.things")); }.observes("currentPerson.isLoaded"), })

¡No sé si esta es la salida que deseabas, pero el error desapareció!

Obtengo esta afirmación cuando ejecuto el siguiente código:

Vaciar una vista en el estado inBuffer no está permitido y no debería ocurrir bajo circunstancias normales. Lo más probable es que haya un error en su aplicación. Esto puede deberse a notificaciones de cambio de propiedad excesivas.

Enlace a la demostración: http://plnkr.co/edit/s3bUw4JFrJvsL690QUMi

var App = Ember.Application.create({ Store: DS.Store.extend({ revision: 4, adapter: DS.FixtureAdapter.create() }), Router: Ember.Router.extend({ root: Ember.Route.extend({ index: Ember.Route.extend({ route: "/", connectOutlets: function(router){ var person; person = App.Person.find(657); person.addObserver("isLoaded", function() { return router.get(''router.applicationController'').connectOutlet("things", person.get("things")); }); } }) }) }), ApplicationController: Em.Controller.extend(), ApplicationView: Em.View.extend({ template: Em.Handlebars.compile("{{outlet}}") }), ThingsController: Em.ArrayController.extend({ thingTypes: (function() { return App.ThingType.find(); }).property() }), ThingsView: Em.View.extend({ template: Em.Handlebars.compile([ ''{{#each controller.thingTypes}}'', ''{{this.name}}'', ''{{/each}}'', ''{{#each controller.content}}'', ''{{this.title}}'', ''{{/each}}''].join("")) }), //MODELS Person: DS.Model.extend({ things: DS.hasMany(''App.Thing'', { embedded: true }) }), Thing: DS.Model.extend({ description: DS.attr(''string''), thingType: DS.belongsTo("App.ThingType", { embedded: true }), title: (function() { return this.get("thingType.name"); }).property("description") }), ThingType: DS.Model.extend({ name: DS.attr("string") }) }); App.Person.FIXTURES = [ { id: 657, things: [ { id: 1, description: "Some text", thing_type: { id: 1, name: "type 1" } }, { id: 2, description: "Some text", thing_type: { id: 2, name: "type 2" } } ] } ]; App.ThingType.FIXTURES = [ { id: 1, name: "type 1" }, { id: 2, name: "type 2" }, { id: 3, name: "type 3" } ];

¿Por qué está pasando esto?


Estaba teniendo el mismo error al intentar cargar una lista de valores desplegables de los dispositivos. Lo que resolvió fue anular queryFixtures en el adaptador del dispositivo:

App.FixtureAdapter = DS.FixtureAdapter.extend latency: 200 queryFixtures: (records, query, type) -> records.filter (record) -> for key of query continue unless query.hasOwnProperty(key) value = query[key] return false if record[key] isnt value true

Probablemente no me habría dado cuenta si no hubiera establecido la latencia primero. Entonces el error fue un poco más descriptivo.