欢迎使用CSDN-markdown编辑器
来源:互联网 发布:linux 安装配置oracle 编辑:程序博客网 时间:2024/06/07 13:22
这里所说的向页面传递参数是指实现页面的跳转,同时跳转之前的页面能够传递参数给跳转之后的页面。 非静态页面传递参数,可以直接通过与后台的交互实现,一个页面将参数的值传入数据库,另一个页面直接从数据库中取出参数即可。 而静态页面由于不能直接从后台获取数据,只能通过JS来实现传递参数。刚开始拿到这个问题的时候,也上网查找了一些资料,但是始终没有找到合适的方法。一种较为简单的方法就是跳转之后直接调用window.location.href获取当前页面的url,然后将其中的参数部分分割出来。 但是这种方法并不适用于我所需要应用的环境。我所需要的是点击当前页面的a标签,使其直接将其url中的参数传递给新页面。此处便需要用到这篇文章的主角——backbone.js,使用backbone.js中的router可以完成此功能。 在这里,我就简单的介绍一下backbone.js的router。 backbone的router可以将特定的url或者锚点绑定到一个指定的方法(action)上。 它主要可以用于两种情形:(1)很多时候,我们为用户提供的是无刷新的页面,其中,用户的操作仅仅只是隐藏或显示了对应的HTML块,并未真正的改变URL,但是,有时用户希望通过“前进”、“后退”操作来返回上一步操作。然而当他这样操作时,并不会返回上一步操作,而是会离开当前页面,这显然不是用户所期望的;(2)用户在单页应用中操作,当他读到一篇好的文章,或看到一个中意的商品时,他可能会将URL收藏起来或分享给自己的好友。但当他下一次重新打开这个链接地址,看到的却是应用的初始化状态,而并不是当初那篇文章或那个商品。 backbone的router提供了解决上述问题的方法,一旦地址栏的URL改变,可以触发为其绑定的触发相应的方法。实现此过程,需要backbone的router与history配合使用:router负责规定URL/锚点与方法的对应关系,history负责监听URL的变化以及触发对应的方法。 要实现以上功能,首先需要定义一个router类,用于声明需要用到的URL规则和其对应的方法,定义好类之后,我们需要实例化router对象并调用 backbone.history对象的start方法,该方法用于监听URL的变化。 相关方法如下:
1.定义URL规则与起对应的方法
var expRouter=Backbone.Router.extend({ routes:{ 'symbol':'symbol', 'symbol/:time':'stime', '*error':'err' }, symbol:function(){ console.log("对应原URL后面加上#使用symbol"); }, stime:function(){ console.log("对应原URL后面加上#symbol之后加上一个参数stime"); }, err:function(){ console.log("对应原URL后面加上任意多个字符"); }});
2.手动触发router上对应的方法
routes: { "help/:page": "help", "download/*path": "download", "folder/:name": "openFolder", "folder/:name-:mode": "openFolder"}router.on("route:help", function(page) { ...});
3.动态调整路由规则
router.route('symbol/:symbol/:place','place',function(){ //do something});
注:route方法中规定的规则不仅可以是字符串,而且可以是正则表达式
4.手动更新URL
router.navigate('symbol/IH1701',{ trigger:true, replace:true});
trigger表示是否想执行URL对应的相应方法,replace表示是否在浏览器的历史记录创建条目来更新URL。
注:不要忘记使用Backbone.history.start()监听URL的变化
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 查看HP-UX主机内存
- 使用maven创建的java项目如何添加resources文件夹
- Python实现简单爬虫功能--批量下载百度贴吧里的图片
- Android 异步消息处理机制(Handler 、 Looper 、MessageQueue)源码解析
- Apache和Nginx运行原理解析
- 欢迎使用CSDN-markdown编辑器
- ListView完整显示高度
- MongoDB + Spark: 完整的大数据解决方案
- LeetCode 217---Contains Duplicate
- 程序员面试金典: 9.3栈与队列 3.5实现一个MyQueue类,该类用两个栈来实现一个队列
- unity3d问题集 <2> 对Vector3.Lerp 插值的理解
- MD5加密工具类
- 修改Eclipse的默认debugKeyStore为带签名的keyStore,方便调试需要验证MD5值的地方
- mysql关于表设计的主键策略