js fiddle demo我有一个Backbone应用程序,我想在路由器上用这些链接触发方法
<a href="/2015/09/28/do-you-drink-whiskey">link</a>
<a href="/2015/09/29/do-you-drink-beer/">link</a>
使用此代码
$(document).on('click', 'a[href^="/"]', function(e){
e.preventDefault();
var href = $(e.currentTarget).attr('href');
Backbone.history.navigate(href, {trigger: true});
}
我尝试捕获以/
开头的链接上的任何点击,我的两个链接都是这样做的。通过传递trigger: true
选项,我知道我正在触发路由器上的路由。
在路由器中,我尝试匹配以2015
开头的任何内容(据我所知,不需要放置初始/
)
var R = Backbone.Router.extend({
routes:{
"": "list",
"restaurants/:id": "restoDetails",
"2015/*": "matchAnything"
},
matchAnything: function(){
alert("yeah, match")
},
restoDetails: function() {
console.log('restoDetails', arguments);
},
list: function() {
console.log('list', arguments);
}
});
new R;
Backbone.history.start({pushState: true);
单击链接时未调用matchAnything方法。问题:如何使用路由器匹配以日期开头的链接(就像我对链接一样)?
更新,我的版本基于this code,并且在该github repo的README.md中,有一个指向工作演示的链接。
答案 0 :(得分:1)
最好听取所有href并确定链接是否为本地链接,因为以/
开头的链接也可以是排除https / http的远程链接(SO上的大量示例)用于检查链接是否是本地链接。)
如果你制作一个没有运行时错误的小提琴,那将会很好;但是无论如何这里是一个有效的小提琴:http://jsfiddle.net/ferahl/0hLn0smc/
您需要在/2015/
之后命名该部件,这有时称为&#34; splat&#34;但你可以写任何一个字:
"2015/*splat": "matchAnything"