0

当我在集合中保存更改的模型时,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
    # ...

为什么我的视图集合在保存时循环播放,我该如何防止它变成香蕉?

4

1 回答 1

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)
于 2013-03-20T10:58:40.513 回答