Ember Ошибка обнуления: утверждение не выполнено: Опорожнение представления в состоянии inBuffer

Я получаю это утверждение при запуске кода ниже:

Очистка представления в состоянии inBuffer недопустима и не должна происходят при нормальных обстоятельствах. Скорее всего, есть ошибка в вашем выражение. Это может быть связано с чрезмерным изменением свойств уведомления.

Ссылка на демо: 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"
 }
];

Почему это происходит?

2 ответа

У меня была такая же ошибка при попытке загрузить список выпадающих значений из светильников. То, что разрешило это, было переопределением queryFixtures на адаптере прибора:

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

Вероятно, я бы не подумал об этом, если бы я не установил латентность в первую очередь. Тогда ошибка была более описательной.


немного поздно, я думаю... но я получил его для работы здесь: http://plnkr.co/edit/********************

Не изменил логику, но там, где ее назвали

Я модифицировал ваш маршрутизатор следующим образом:

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));
 }
 })
 })
 })

И создал ApplicationController:

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

Я не знаю, был ли это результат, который вы хотели, но ошибка исчезла!

licensed under cc by-sa 3.0 with attribution.