我想用 CanJS 设置路由,以便根据我点击的 url,设置一些相应的控件。我的问题是试图找到一种方法来表达要在控件中侦听的默认路由:“如果没有匹配,则执行此操作”。有什么建议吗?
到目前为止,这是我的代码。似乎适用于 and 之类的网址/#!/plant/1/day/3
,/#!/plant/1
但不适用于/#!
or/
can.route('plant/:plant_id/day/:day', {});
can.route('plant/:plant_id', {});
can.route('', {});
var Router = can.Control({}, {
init : function () {},
"{can.route}" : function (route, event, newVal, oldVal) {
console.log('Init default control');
},
"{can.route} plant_id" : function (route, event, newVal, oldVal) {
console.log('Init plant control');
},
"{can.route} day" : function (route, event, newVal, oldVal) {
console.log('Init day control');
}
});
PS我实际上通过这样做使用Can.Control.route插件来做到这一点:
"route" : function (route, event, newVal, oldVal) {
console.log('route Default route', arguments);
}
但是路由插件似乎既设置路由又对它们做出反应,我想知道如何在没有特定插件的情况下做到这一点。