Подтвердить что ты не робот

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"
  }
];

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

4b9b3361

Ответ 1

У меня была такая же ошибка при попытке загрузить список выпадающих значений из светильников. То, что разрешило это, было переопределением 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

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

Ответ 2

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

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

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

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"),
  })

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