Javascript 如何在主干分页集合中保留当前页面的其他url参数?
如何保留最新的搜索参数,例如:Javascript 如何在主干分页集合中保留当前页面的其他url参数?,javascript,backbone.js,collections,fetch,Javascript,Backbone.js,Collections,Fetch,如何保留最新的搜索参数,例如:lat和lng或additional,并在更改分页时使用当前页面参数获取它们?现在,当页面更改时,其他参数将消失 在某些视图中使用新数据参数获取集合: @options.posts.fetch({ data: { page: 1, lat: x.latitude, lng: y.longitude, additional: eg.test } processData: true }) 分页集合: define [ 'backbone' 'mya
lat
和lng
或additional
,并在更改分页时使用当前页面参数获取它们?现在,当页面更改时,其他参数将消失
在某些视图中使用新数据参数获取集合:
@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
编辑:
正如您在回答中所建议的,我将变量存储在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})
我不知道此模式是否正确,但此解决方案正在运行。2种方法:
lat
、lng
和附加值
# 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)
您可以在集合中创建自定义字段并将其存储在其中。