2015-05-20 1 views
0

Я столкнулся с проблемой устаревших ссылок на коллекции. Итак, у меня есть следующие модели:Поддержание ссылок на базовую группу Ссылки

ProcessModel = Backbone.Model.extend({ 
    initialize: function() { 
     this.set('steps', new StepsCollection()); 
    } 
    ... 
}); 

Когда ProcessModel извлекается из сервера, StepsCollection возвращается как хорошо. Раньше у меня был следующий метод синтаксического анализа:

parse: function(response) { 
    ... 
    response.steps = new StepsCollection(response.steps, {parse: true}); 
} 

... однако, это создание бренда объект новой коллекции, а не повторное использование существующего. Это вызывало представление, которое было связано с предыдущей коллекцией «шагов», чтобы стать устаревшей.

Я попытался следующие:

response.steps = this.get('steps').reset(response.steps); 

Но я получаю длинный StackTrace в Object.Marionette.bindEntityEvents. Что я делаю не так?

ответ

0

Попробуйте это. Это создаст единую коллекцию, а затем мы сбросим тот же экземпляр коллекции с новым набором данных внутри метода разбора.

ProcessModel = Backbone.Model.extend({ 
     initialize: function() { 
      this.myCollection = new StepsCollection(); 
      this.set('steps', this.myCollection); 
      ... 
     }, 
     parse: function(response) { 

      this.myCollection.reset(response.steps); 
      this.set('steps', this.myCollection); 
      ... 
     } 

    }); 
+0

Я забыл, что я отправил это :-) – ThisRestlessPilgrim

+0

Это в основном то, что я закончил делать, хотя и с некоторыми охранниками в Initialize (...) и синтаксический (...), чтобы справиться с ситуацией, когда модель созданный на стороне клиента и ситуация, когда модель поступает непосредственно с сервера. – ThisRestlessPilgrim

+0

О, и странная ошибка, которую я получил, вызвана разбором подэлементов в модели Step – ThisRestlessPilgrim