骨干.js解析路由器中的可选页面查询字符串
Backbone.js parse optional page query string in router
我正在慢慢地将我的django实现移动到backbonejs渲染。Django 被用作 backbonejs 渲染无法处理时的后备。这是由使用以下代码的 backbonejs 路由器处理的。
Backbone.history.start({
pushState: true,
silent: true
});
$(document).on("click", "a[href^='/']", function(event) {
if (!event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {
var url = $(event.currentTarget).attr("href").replace(/^'//, "");
var matched = _.any(Backbone.history.handlers, function(handler) {
if (handler.route.test(url)) {
return true;
}
});
if (matched) {
event.preventDefault();
application.router.navigate(url, { trigger: true });
}
}
});
基本上,如果骨干路由器无法处理,它将回退到 django 模板渲染。但是我现在无法捕获分页的页面。我定义了以下路由。
module.exports = Backbone.Router.extend({
routes: {
'set/(?page=:page)': 'list_set'
},
list_set: function(page) {
// Do listing of set
}
});
我希望带有set/?page=2
的网址由Backbone.js触发。但上述路线不匹配。什么是路由模式,它将使页面参数可选并使 backbonejs 处理路由?
使用的路由模式是正确的。发现问题出在 html 页面中定义锚点 href 的方式上。
锚元素定义如下:
<a class="page" href="?page=2" data-original-title="" title="">2</a>
href 值?page=2
以 ?.但是事件侦听器期望仅在 href 以 / 开头的地方捕获锚点的点击事件。因此,它未能阻止默认!
相关文章:
- 如何有效地将游戏数据存储在URL查询字符串中
- 从查询字符串参数推断出正确的数据类型
- AngularJS:获取链接中没有哈希的查询字符串值
- AngularJS,如何更改查询字符串
- 如何将activeadmin查询字符串传递给batch_action
- 如何从查询字符串中的输入字段发回文本
- Django在使用AJAX时没有接收到新的查询字符串
- 使用查询字符串方法清除浏览器缓存
- 用于刷新的Javascript更改查询字符串
- 我想将查询字符串变量添加到JSON名称/值对中
- 将查询字符串值从页面传递 asp.net 到 iframe
- jqueryajax生成查询字符串,如果未定义则不通过
- 如何将查询字符串传递到HTML框架
- AngularJs将查询字符串发布到c#控制器
- Jquery - 从查询字符串中获取“#”值之后,而不是在“?”符号值之后获取
- 在 JavaScript 中将查询字符串传递给 Web 服务 (ASP.NET)
- 在查询字符串中查找 where 子句
- POST encodeURI查询字符串内部服务器错误 500
- JavaScript:从具有使用 # 符号的路由的 URL 获取查询字符串
- 更改链接 URL 中的路径名,同时保持查询字符串不变