在集合更改事件上调用model.save()时,Backbone.Backgrid无限循环

时间:2013-03-20 10:14:30

标签: backbone.js coffeescript infinite-loop put backgrid

当我在集合中保存更改的模型时,Backbone.Backgrid进入PUT请求循环。循环仅在我在PUT请求中返回更新(或旧)模型时发生,但在仅返回200响应时则不会发生。

这是我的事件代码,它监听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
    # ...

为什么我的视图集合会在保存时循环播放,如何阻止它进入香蕉?

1 个答案:

答案 0 :(得分:2)

在阅读Backbone和Backgrid来源后,我通过在我的收藏集中更改了silent来设置save()选项来解决此问题,以便通过提升循环播放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)