zoukankan      html  css  js  c++  java
  • Backbone.js入门教程第二版笔记(2)

    关于手动触发router,之前看到的例子都是通过在url后面加上#xxx或者点击一个a链接方法来触发,

    还有一种情况是通过触发一种规则,来触发另一种规则(表述无能),比如这个例子中,我在url后面加上#manual,url的地址就转变为xxxx/route/n ,这里由于只给navigate传了一个参数,url改变之后并没有触发getId事件。

    var AppRouter=Backbone.Router.extend({
        routes:{
            "route/:id":"getId",
            "manual":"manual"
        },
        getId:function(id){
            console.log(id);
        }
        ,manual:function(){//当此事件触发时,url会转为route/n (n表示1-9的随机数)
            this.navigate("route/"+Math.floor(Math.random()*9+1));
        }
    });
    
    var app_router = new AppRouter;
    Backbone.history.start();

    如果需要触发事件,必须设置trigger的值:

    var AppRouter=Backbone.Router.extend({
        routes:{
            "route/:id":"getId",
            "manual":"manual"
        },
        getId:function(id){
            console.log(id);
        }
        ,manual:function(){//当此事件触发时,url会转为route/n (n表示1-9的随机数)
            this.navigate("route/"+Math.floor(Math.random()*9+1),{trigger:true,replace:false});
        }
    });
    
    var app_router = new AppRouter;
    Backbone.history.start();
    
    //控制台会输出一个1-9的随机数

    关于replace这个值,文章中提到“replace表示url替换,而不是前进到这个url,意味着启用该参数,浏览器的history不会记录这个变动。

    这是说,如果replace的值为false,那么这个例子中的#manual也会作为历史记录,所以我在点击浏览器中的后退按钮时,url会不断的产生新的随机路径,因为后退到manual的
    瞬间,url又变了。



    而如果replace的值为true,则是url替换,比如
    打开一个新窗口,输入http://www.baidu.com
    ,再连续三次file:///D:/wamp/www/backbone_test/test.html#manual 回车
    按下后退按钮时,发现页面回到了百度首页。这说明url的变化没有被记录到历史记录中。

  • 相关阅读:
    Codeforces Round #369 (Div. 2)
    Codeforces Round #361 (Div. 2)
    【转】.NET开发人员的瓶颈和职业发展
    【资料目录收藏】.NET开发必看资料53个 经典源码77个
    IT新人养成与蘑菇理论
    软件开发技术高手转向项目管理者要突破的误区
    关于程序猿的那些笑话
    工作流管理系统的应用
    工作流管理系统的标准和产品
    工作流系统的主要组成部分
  • 原文地址:https://www.cnblogs.com/qianlegeqian/p/3973965.html
Copyright © 2011-2022 走看看