如何使用 {can.route} 侦听和响应空白路由
How do I listen for and react to a blank route using {can.route}?
我想用CanJS设置路由,以便根据我点击的url,设置一些相应的控件。我的问题是试图找到一种表达默认路由的方法,以便在控件中侦听:"如果没有匹配,则执行此操作"。有什么提示吗?
这是我到目前为止的代码。似乎适用于 /#!/plant/1/day/3
和 /#!/plant/1
等网址,但不适用于/#!
或/
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');
}
});
附言我实际上设法使用 Can.Control.route 插件做到了这一点:
"route" : function (route, event, newVal, oldVal) {
console.log('route Default route', arguments);
}
但是路由插件似乎既设置了路由又对它们做出了反应,我想知道如何在没有特定插件的情况下做到这一点。
您的解决方案有效,但您也可以使用罐头。Control.route 插件,可让您直接在控制器操作中定义和侦听路由:
var Router = can.Control({
init : function(el, options) {
},
"/:plantId route" : function(data) {
// the route says /id
// data.id is the id or default value
},
route : function(data){
// the route is empty
}
});
new Router(window);
最终做了类似以下内容的事情,但感觉不太理想......
"{can.route} change" : function (ev, attr, how, newVal, oldVal) {
if(newVal=== 'add' && (!ev.attr('plant_id') && !ev.attr('day')))
console.log('{can.route} Default route', arguments);
},
我注意到默认的"/"路由也有同样的问题。 我潜入 pushstate.js发现它在默认路由下无法正常工作。 您可以在此处查看更多详细信息:https://forum.javascriptmvc.com/#Topic/32525000001460049
我没有测试过没有 pushstate .js(使用 #!)的任何内容,所以这仅适用于使用 pushstate。
相关文章:
- 如何删除多行HTML排列中的空白
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- 不同浏览器中的空白字符正则表达式行为
- Javascript中的空白是什么
- 如何将getJson的响应保存在全局变量中
- Facebook共享显示一个接一个的空白页面
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- ajax给出空白响应
- 回调返回响应,但当在API中发送时,响应在节点JS中显示为空白
- XMLHttpRequest 的响应文本在 Mozilla 中为 null(空白)
- $('body').html()从来自Firefox中$jQuery.post的响应数据中给出了空白内容
- 响应式文件管理器 9 在 TinyMCE 4 中打开空白对话框
- 基于时间的 javascript,创建一个大约 30 分钟的空白响应
- 如何使用 {can.route} 侦听和响应空白路由
- 图像的响应式空白图像叠加
- AJAX响应中的空白
- 在javascript中从JSON (api响应)中删除空白
- 检查AJAX响应数据是否为空/空白/null/未定义/0
- 出乎意料的空白Ajax响应文本