欢迎使用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
原创粉丝点击