如何保留最新的搜索参数,例如lat
和lng
或additional
,并在更改分页时使用当前页面参数获取它们?现在,当页面被更改时,其他参数就消失了。
在某些视图中使用新数据参数获取集合:
@options.posts.fetch({
data: { page: 1, lat: x.latitude, lng: y.longitude, additional: eg.test }
processData: true
})
Paginated Collection:
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
修改
正如你在回答中建议的那样,我将变量存储在collection和override 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})
我不知道这种模式是否正确,但这个解决方案正在发挥作用。
答案 0 :(得分:0)
2种方式:
当服务器端收到提取请求时。它会回复lat
,lng
和additional
值。
使用一些结构来存储变量。 e.g
# 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)