2013-03-20 24 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,因爲Changelog列出了您的問題,但對於2010年的版本? – snedkov 2013-03-20 10:35:23

+0

@svetoslavnedkov我正在運行最新版本的Backbone.js 0.9.10。 – 2013-03-20 10:37:51

回答

2

通過骨幹網和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

嗯沉默不是爲我工作...必須有另一種方式... – ErichBSchulz 2013-05-20 07:53:24

+0

我遇到這個帖子時,追捕多個POST循環,問題當然是從視圖的多個(舊)副本發射的事件有問題。以防萬一它幫助其他人。 – 2014-11-21 17:29:22