0

我有一个项目列表和一个查询文本字段。当我在文本字段中输入查询时,我想根据查询过滤项目列表。我怎样才能做到这一点?

在视图中我添加了一个事件:

events: ->
    'submit #query_form'          : 'filterLinks'

这会触发一个函数,我首先清空列表,然后只显示符合查询条件的项目:

  filterLinks: ->
    query = $('#query').val()
    @collection.reset()

如何过滤列表?

编辑:这是完整的视图:

  template: JST['links/index']

  initialize: ->
    @collection.on('reset', @render, this)
    @collection.on('add', @appendLink, this)

  events: ->
    'submit #new_link'            : 'createLink'
    'submit #query_form'          : 'filterLinks'

  render: ->
    $(@el).html(@template())
    @collection.each(@appendLink)
    this

  createLink: (event) ->
    event.preventDefault()
    @collection.create
      title:        $('#title').val()
      description:  $('#description').val()
      url:          $('#url').val()
      category:     $('#category').val()
      votes:        0
    $('#message').append('<div>Link has been added succesfully!</div>').fadeOut(5000)

  appendLink: (link) ->
    view = new Hotlynx.Views.Link(model: link)
    $('#all_links').append(view.render().el)

  filterLinks: ->
    alert($('#query').val())
    @collection.reset()
4

2 回答 2

0

您可以使用下划线的filter方法来过滤集合并仅返回您想要的结果。见:http ://underscorejs.org/#filter

然后,您将使用此过滤器的结果重新渲染显示项目的视图。

于 2013-02-13T19:33:12.473 回答
0

您可以重新渲染并执行以下操作:

appendLink: (link) ->
    if( link.get('someAttribute') === this.filterValue)
        view = new Hotlynx.Views.Link(model: link)
        $('#all_links').append(view.render().el)
于 2013-02-13T19:49:18.050 回答