0

如何保留最新的搜索参数,例如:latand lngoradditional并在分页更改时使用当前页面参数获取它们?现在,当页面更改时,其他参数都消失了。

在某些视图中使用新数据参数获取集合:

@options.posts.fetch({ 
  data: { page: 1, lat: x.latitude, lng: y.longitude, additional: eg.test }
  processData: true 
})

分页集合:

define [
  'backbone'
  'myapp'
  'models/post'
  # 'collections/paginated'
],
( Backbone, App, Post) ->
  class App.Collections.Posts extends Backbone.Collection
    model: Post
    url: "/posts"
    initialize: ->

    fetch: (options = {}) ->
      @trigger "fetching"
      self = this
      success = options.success
      options.success = (resp) ->
        self.trigger "fetched"
        success self, resp if success
      Backbone.Collection::fetch.call this, options

    parse: (resp) ->
      @current_page = resp.current_page
      @total_pages = resp.total_pages
      resp.items

编辑:

正如您在回答中建议的那样,我将变量存储在集合中并覆盖 url 函数:

url: ->
  "/posts?" + $.param(
    additional: @additional
    lat: @lat
    lng: @lng
  )

或在视图中:

@options.posts.url = "/posts?" + $.param({ additional: eg.test, lat: x.latitude, lng: y.longitude })
@options.posts.fetch({reset: true})

我不知道这种模式是否正确,但这种解决方案是有效的。

4

1 回答 1

0

2种方式:

  1. 当服务器端收到获取请求时。它搭载lat,lngadditional值作为响应。

  2. 使用一些结构来存储你的变量。例如

    # use collection object
    @options.posts.lat = x.latitude
    @options.posts.lng = y.longitude
    @options.posts.additional = eg.test
    
    # use DOM
    $(document).data("lat", x.latitue)
    $(document).data("lng", y.longitude)
    $(docuemnt).data("additional", eg.test)
    
于 2013-11-12T09:41:48.670 回答