2013-03-20 2 views
0

Backbone.Backgrid входит в цикл запроса PUT при сохранении измененной модели внутри моей коллекции. Цикл возникает только тогда, когда я возвращаю обновленную (или старую) модель в запросе PUT, но не при возврате только 200 ответов.Backbone.Backgrid бесконечный цикл при вызове model.save() при событии изменения коллекции

Вот мой код события, который слушает Backgrid обновления и запускает сохранить для этой строки:

AppRouter = Backbone.Router.extend(
    # ... 

    initialize: -> 
     @items = new Stock.Collections.Items() # collection with URL: /api/items 

     @items.on 'change', (item) -> 
      console.log 'collection changed' 
      console.log(item) 
      item.save() # this seems to be triggering additional change events 
      return 
    # ... 

Почему моя коллекция вида зацикливания на сохранить и как предотвратить его от идти бананы?

+0

** item.save ** действительно вызывает события изменения, но только если вы изменили атрибуты модели тем временем. Возможно ли, что у вас более старая версия Backbone, потому что в списке изменений перечислены ваши проблемы, но для версии старой версии 2010 года? – snedkov

+0

@svetoslavnedkov Я запускаю Backbone.js 0.9.10, последнюю версию на сегодняшний день. –

ответ

2

После прочтения через Backbone и источники Backgrid, я решил эту проблему, установив silent вариант в моей коллекции изменился save() вызова, precent распространяющихся model.set() вызовов от повышения цикла событий изменения:

item.save null, 
    silent: true # important! 
    success: (model, res) -> 
     console.log('model saved:') 
     console.log(model) 
    error: (model, res) -> 
     console.log('error saving:') 
     console.log(model) 
+0

mmm, что молчание не работает для меня ... должен быть другой способ ... – ErichBSchulz

+0

Я столкнулся с этим сообщением, когда искал несколько циклов POST, и проблема была, конечно же, в том, что события стреляли из нескольких (старых) копий вида обсуждаемый. На всякий случай это помогает кому-то еще. –

Смежные вопросы