gpt4 book ai didi

javascript - Backbone 路由器路由定义来处理所有这些情况

转载 作者:行者123 更新时间:2023-11-30 05:32:44 25 4
gpt4 key购买 nike

我想要的是一条可以在 1 行中处理以下所有路由的路由。

目前它看起来像这样:

routes: {
'item': 'itemConsole',
'item/view/:workflowId': 'itemDetail',
'item/create': 'itemCreate',
'item/create/:templateId': 'itemCreate',
'item/task/:taskId': 'itemTask',
'item/metrics': 'itemMetrics',
'item/notAccessible': 'itemNotAccessible',
}

我想使用提到的 splat(*) 将其压缩为 here

这行得通 'item(*thing)': 'itemController' 但是 Controller 收到了一个字符串,然后我必须拆分它而不是什么。我宁愿将它们作为参数 (action, id) 传递给我的 Controller ,而不是单个字符串参数。

最佳答案

route 的可选部分 (/:optional) 可以解决问题:

var Router = Backbone.Router.extend({
routes: {
'item(/:action)(/:id)': 'itemController'
},

itemController: function (action, id) {
console.log(action, id);
}
});

var Router = Backbone.Router.extend({
routes: {
'item(/:action)(/:id)': 'itemController'
},

itemController: function (action, id) {
$('#log').append(JSON.stringify({
action: action,
id: id
}));
}
});

new Router();
Backbone.history.start();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://underscorejs.org/underscore-min.js"></script>
<script src="http://backbonejs.org/backbone-min.js"></script>

<a href='#item'>#item</a>
<hr />
<a href='#item/view'>#item/view</a>
<hr />
<a href='#item/view/1'>#item/view/1</a>
<hr />
<a href='#item/create'>#item/create</a>
<hr />
<a href='#item/create/2'>#item/create/2</a>

<div id='log'></div>

关于javascript - Backbone 路由器路由定义来处理所有这些情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25917202/

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