gpt4 book ai didi

backbone.js - 如何将查询字符串传递给backbone.js 路由

转载 作者:行者123 更新时间:2023-12-02 04:44:15 24 4
gpt4 key购买 nike

我正在使用 Backbone.js 和 jQuery-mobile。 jQuery 移动路由已禁用,我仅将库用于 UI。除了选择页面转换之外,我一切正常。我需要将页面转换(“向上切片”、“淡入淡出”、“向下滑动”)传递到 Backbone 路由器,因为转换根据用户来自的位置而变化。

我想出了一个非常丑陋的方法来做到这一点,通过网址传递它们:

class App.Routers.Foods extends Backbone.Router
routes:
'': 'index'
':transition': 'index'
'foods/new': 'new'
'foods/new/:transition': 'new'

initialize: ->
@collection = new App.Collections.Foods()
@collection.fetch()

index: (transition)->
view = new App.Views.FoodIndex(collection: @collection)
App.changePage(view, transition)

new: (transition)->
view = new App.Views.FoodNew(collection: @collection)
App.changePage(view, transition)

这里是默认转换的 html 链接:

<a href="#" data-icon="back" class="ui-btn-left">Back</a>

这里是淡入淡出过渡的 html 链接:

<a href="#fade" data-icon="back" class="ui-btn-left">Back</a>

使用查询字符串,即/food/new?transition='fade' 肯定更好,但我不知道如何定义主干路由以使用查询字符串变量。

我应该怎么做?

是否有更优雅的方法来处理我的问题,即根本不使用 url 传递变量?

最佳答案

您必须手动解析路由器函数内的 URL 参数。

class App.Routers.Foods extends Backbone.Router
routes:
'': 'index'
'foods/new': 'new'

initialize: ->
@collection = new App.Collections.Foods()
@collection.fetch()

index: ()->
view = new App.Views.FoodIndex(collection: @collection)
App.changePage(view, getQueryVariable('transition'))

new: ()->
view = new App.Views.FoodNew(collection: @collection)
App.changePage(view, getQueryVariable('transition'))

JS function解析查询参数。

function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return unescape(pair[1]);
}
}
return false;
}

您当然必须将 JS 函数转换为 CS,但您明白了。

关于backbone.js - 如何将查询字符串传递给backbone.js 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9966958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com