Javascript 重置/清除主干集合

Javascript 重置/清除主干集合,javascript,backbone.js,Javascript,Backbone.js,我正在获取一个搜索表单的主干集合。我想我希望在每次搜索后重置集合,因为当前搜索结果只是将新结果附加到以前的结果 目前,@collection.reset()完全不做任何事情 class ****.Views.DesignerSearchView extends Marionette.CompositeView className: 'tab_pane' id: 'search_items' template: JST['designer/DesignerSearchTempla

我正在获取一个搜索表单的主干集合。我想我希望在每次搜索后重置集合,因为当前搜索结果只是将新结果附加到以前的结果

目前,@collection.reset()完全不做任何事情

class ****.Views.DesignerSearchView extends Marionette.CompositeView

  className: 'tab_pane'

  id: 'search_items'

  template: JST['designer/DesignerSearchTemplate']


  itemView: (obj) ->
    new Mywebroom.Views.DesignerSearchItemsLayout(obj)

  itemViewContainer: "div"

  events: {
    'keyup #designer_search': 'search'
    'click .fa-times ': 'clearSearch'
  }

  initialize:->

    @collection = new Mywebroom.Collections.SearchItems()


  search: ->

    searchTerm = $('#designer_search').val()

    @collection.reset()
    @collection.fetch({
      data: $.param({ search : searchTerm })

      async: false
      success: (collection, response, options) ->
        console.log("designs fetch success", response)

      error: (collection, response, options) ->
        console.error("designs fetch fail", response.responseText)
    })
编辑

根据CharlieBrowns的建议:

search: ->

    searchTerm = $('#designer_search').val()

    @collection.fetch({
      data: $.param({ search : searchTerm })

      async: false
      reset: true
      success: (collection, response, options) ->
        console.log("designs fetch success", response)

      error: (collection, response, options) ->
        console.error("designs fetch fail", response.responseText)
    })

但是仍然没有运气

您有两个选择:

  • 使用collection.reset([])重置集合并添加0个新模型
  • 使用collection.fetch({reset:true})在每次提取时重置集合

  • 谢谢你的帮助,但两人似乎都没用。我可能做错了吗?我只是想确定一下,因为问题不是100%清楚,问题是搜索结果保存在集合中或您的复合视图中?可能您是CompositeView,当您
    reset()
    集合时,它没有删除子项。您应该在
    success
    处理程序上
    console.log(collection.toJSON())
    检查集合上是否有以前的模型。
    search: ->
    
        searchTerm = $('#designer_search').val()
    
        @collection.reset([])
        @collection.fetch({
          data: $.param({ search : searchTerm })
    
          async: false
          success: (collection, response, options) ->
            console.log("designs fetch success", response)
    
          error: (collection, response, options) ->
            console.error("designs fetch fail", response.responseText)
        })