1、Backbone.history.start 方法可以让我们在点击后退或者前进的时候同样会触发路由的事件。

2、添加路由的路径,添加的路由路径要求重写父类的routes这个对象

  1. var CustRoute = Backbone.Router.extend({
  2. initialize: function () {
  3. console.log("Route initialize");
  4. },
  5. routes: {//routes表示路由,页面跳转的路径
  6. "": "index",//冒号前边表示网页跳转的名字,冒号后边是对应的页面名称
  7. "help": "help",
  8. "single/:single": "fsingle",
  9. "multip/:single/:multip": "fmultip"
  10. },
  11. index: function () {
  12. console.log("index");
  13. },
  14. help: function () {
  15. console.log("help");
  16. },
  17. fsingle: function (single) {
  18. console.log("single:" + single);
  19. },
  20. fmultip: function (single, multip) {
  21. console.log("multip:" + single + ":" + multip);
  22. }
  23. });
  1. 3workspace.navigate("help/troubleshooting",{trigger: true});
    navigate表示不通过a标签的href来实现url变更,那个至少需要用户去点击它,而使用navigate我们可以利用程序来强制实现url变更
  1. //触发help事件处理器,假如不加{trigger:true}则不会触发help事件处理器。
  1. workspace.navigate("help/troubleshooting",{replace: true});
  1. replace:true表示导航之前那个url将不会计入history,不会被形成浏览记录(即后退也不能回到跳转前的页面)
  1. 4、创建模型:var model=new Backbone.Model();
           model.set("name","hellow");//设置模型参数
          console.log(model.get("name"))//获取模型参数
    1:直接创建对象
  1.  var model_1=new Backbone.Model({"name":"hello"});//创建模型对象
  2.   var model_2=new Backbone.Model({"name":"word"});
  3.   var models=new Backbone.Collection();//创建模型集合
  4.   models.add(model_1);//把模型对象添加到模型集合中
  5.   models.add(model_2);
  6.   alert(JSON.stringify(models));//通过JSON中解析的方法输出集合
  1. 2:给构造函数添加实例方法和静态方法
  1.  var M=Backbone.Model.extend({
  2.   aaa:function(){//实例方法
  3.     alert(123);
  4.     }
  5.   },{
  6.   bbb:function(){//静态方法
  7.     alert(456);
  8.     }
  9.   });
  10.   var model=new M();
  11.   model.aaa();
  12.   M.bbb();
  1. 3
      
  1.  var M=Backbone.Model.extend({
  2.   defaults:{
  3.     name:'hello'
  4.     }
  5.   });
  6.   var model=new M();
  7.   alert(model.get("name"));
  1. 4:继承操作
      
  1. var M=Backbone.Model.extend({
  2.   aaa: function(){
  3.     alert(123);
  4.     }
  5.   });
  6.   
  7.   var ChildM=M.extend();
  8.   var model=new ChildM;
  9.   model.aaa();  
  1. 5:自定义事件

  

  1. var M=Backbone.Model.extend({
  2.   defaults:{
  3.     name:"hello"//设置模型中默认的name为hello
  4.     },
  5.   initialize:function(){
  6.     this.on("change",function(){//当defaults中数据发生变化时,需要执行function中的内容,也就是当模型中name变为hi的时候,执行alert(123)
  7.       alert(123);
  8.       })
  9.     }
  10.   });
  11.   var model=new M;
  12.   model.set("name","hi");//设置模型中name属性为hi 
  1. 6:自定义事件
      
  1. var M=Backbone.Model.extend({
  2.   defaults:{
  3.     name:"hello"//设置模型中默认的name为hello
  4.     },
  5.   initialize:function(){
  6.     this.on("change:name",function(){//当defaults中name数据发生变化时,需要执行function中的内容,也就是当模型中name变为hi的时候,执行alert(123)
  7.       alert(123);
  8.       })
  9.     }
  10.   });
  11.   var model=new M;
  12.   model.set("name","hi");//设置模型中name属性为hi
  1. 7:视图跟模型连接到一起

  

  1. $(function(){
  2.     var M=Backbone.Model.extend({
  3.     defaults:{
  4.       name:"hello"
  5.       }
  6.     });
  7.     var V=Backbone.View.extend({
  8.     initialize:function(){
  9.       this.listenTo(this.model,"change",this.show);
  10.       },
  11.     show:function(model){
  12.       $("body").append('<div>'+model.get("name")+'</div>');
  13.       }
  14.     });
  15.     var m=new M;
  16.     var v=new V({model:m});
  17.     m.set("name","hi");
  18.    });
  1. 8:数据与模型 
  1. /*Backbone.sync=function(method,model){//Backbone.sync同步到服务器上
  2.     alert(method+":"+JSON.stringify(model));
  3.     model.id=1;
  4.   };*/
  5.   var M=Backbone.Model.extend({
  6.   defaults:{
  7.     name:"hello"
  8.   },
  9.   url:'/user'//save()是通过ajax方式把值发送给后台,url即是ajax中的url,然后存到服务器上。set()只是将数据保存到本地
  10.   });
  11.   var m=new M;
  12.   m.save();//把现在的模型对象保存到服务器上
  13.   m.save({name:"hi"});
  1. 9:获取服务器上的数据 
  1. /*Backbone.sync=function(method,model){//Backbone.sync同步到服务器上
  2.     alert(method+":"+JSON.stringify(model));
  3.  
  4.   };*/
  5.   var C=Backbone.Collection.extend({
  6.   initialize:function(){
  7.   this.on("reset",function(){//当获取数据成功后会执行reset中的方法,意思就是服务器中的数据获取成功执行函数
  8.     alert(123);
  9.   });
  10.   },
  11.   url:"/users"//获取服务器上数据的地址
  12.   });
  13.   var models=new C;
  14.   models.fetch();//fetch()是获取服务器上的数据 
  1. 9Backbone路由域历史管理
  1. var Workspace=Backbone.Router.extend({
  2.   routes:{
  3.     "help":"help",
  4.     "search/query":"search",
  5.     //#search/kiwis可跳转这类
  6.     "search/:query/p:page":"search"
  7.     //#search/kiwis/p7可跳转这类
  8.     },
  9.   help:function(){
  10.     alert(1);
  11.     },
  12.   search:function(query,page){
  13.     alert(2);
  14.     }
  15.   });
  16.   var w=new Workspace;
  17.   Backbone.history.start();
  1. 10:事件委托
  1. $(function(){
  2.     var V=Backbone.View.extend({
  3.     el:$("body"),//当前的委托人
  4.     events:{
  5.       'click input':'aaa',//页面上有一个input按钮和几个li
  6.       'mouseover li':'bbb'
  7.     },
  8.     aaa:function(){
  9.       alert(123);
  10.       },
  11.     bbb:function(){
  12.       alert(456);
  13.       }
  14.     });
  15.     var veiw=new V;
  16.     })
  1. 11htmljs分离
  1. <script type="text/template" id="template">
  2.  
  3.   <% for(var i=0;i<5;i++){%>//此处可用这种方式循环,也可不循环
  4.  
  5.     <div><%=name %></div>
  6.  
  7.   <% } %>
  8. </script>
  9. <script>
  10.  $(function(){
  11.     var M=Backbone.Model.extend({
  12.     defaults:{
  13.       name:"hello"
  14.       }
  15.     });
  16.     var V=Backbone.View.extend({
  17.     initialize:function(){
  18.       this.listenTo(this.model,"change",this.show);
  19.       },
  20.     show:function(model){
  21.       $("body").append(this.template(this.model.toJSON()));
  22.       },
  23.     template:_.template($('#template').html());
  24.     });
  25.     var m=new M;
  26.     var v=new V({model:m});
  27.     m.set("name","hi");
  28.    });
  29. </script>
  1. 参考网站:网易云课堂视频(妙味) http://www.cnblogs.com/yaozhenfa/p/backbone_router.html

require.js 及 mustache.js参考笔记 http://www.cnblogs.com/dongxiaolei/p/5834021.html http://www.cnblogs.com/dongxiaolei/p/5834018.html

如果需要定义全局变量,在src/app/main.js中定义window.变量名,变量名必须为大写

backbone--部分总结的更多相关文章

  1. Backbone源码解析(六):观察者模式应用

    卤煮在大概一年前写过backbone的源码分析,里面讲的是对一些backbone框架的方法的讲解.这几天重新看了几遍backbone的源码,才发现之前对于它的理解不够深入,只关注了它的一些部分的细节和 ...

  2. MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录

    注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...

  3. 使用backbone的history管理SPA应用的url

    本文介绍如何使用backbone的history模块实现SPA应用里面的URL管理.SPA应用的核心在于使用无刷新的方式更改url,从而引发页面内容的改变.从实现上来看,url的管理和页面内容的管理是 ...

  4. Backbone中的model和collection在做save或者create操作时, 如何选择用POST还是PUT方法 ?

    Model和Collection和后台的WEB server进行数据同步非常方便, 都只需要在实行里面添加一url就可以了,backbone会在model进行save或者collection进行cre ...

  5. Backbone.js 中的Model被Destroy后,不能触发success的一个原因

    下面这段代码中, 当调用destroy时,backbone会通过model中的url,向服务端发起一个HTTP DELETE请求, 以删除后台数据库中的user数据. 成功后,会回调触发绑定到dest ...

  6. Backbone.js应用基础

    前言: Backbone.js是一款JavaScript MVC应用框架,强制依赖于一个实用型js库underscore.js,非强制依赖于jquery:其主要组件有模型,视图,集合,路由:与后台的交 ...

  7. Backbone事件模块及其用法

    事件模块Backbone.Events在Backbone中占有十分重要的位置,其他模块Model,Collection,View所有事件模块都依赖它.通过继承Events的方法来实现事件的管理,可以说 ...

  8. Backbone源码学习之extend

    extend函数在backbone大概就20来行代码包括注释,对学习Javascript中"类"的继承很是好的学习资料. 下面先贴出Backbone中的源码,其中涉及到unders ...

  9. Backbone,Marionette,Talent学习笔记

    具体以源码为准 Talent继承自Marionette继承自BackBone Region: 继承自Backbone.Event,show(view)会调用view.render(),然后$el.ap ...

  10. backbone入门示例

    最近因为有个项目需要用backbone+mui  所以最近入坑backbone. Backbonejs有几个重要的概念,先介绍一下:Model,Collection,View,Router.其中Mod ...

随机推荐

  1. [金阳光测试]IOS 自动化测试

    第一讲 一 自备能力 1.熟悉js脚本(必须) 2.会常用的linux命令(必须) 3.英文能力(必须) 4.熟悉java(必须) 5.会一点点shell和python 6.会一些oc和IOS开发 二 ...

  2. centos6.6 设置静态网络

    [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0HWADDR=08:00:27:3D:5F:38 ...

  3. 修复跨站攻击 php

    在公用文件中加入如下代码 <?php /*云体检通用漏洞防护补丁v1.1 更新时间:2013-05-25 功能说明:防护XSS,SQL,代码执行,文件包含等多种高危漏洞 */ $url_arr= ...

  4. 我的android学习经历24

    Fragment生命周期 1.onAttach() 2.onCreate() 3.onCreateView() 4.onActivityCreated() 5.onStart() 6.onResume ...

  5. Spring的"Hello, world",还有"拿来主义"

    这里有两个类: com.practice包下的SpringTest.java和PersonService.java. Spring可以管理任意的POJO(这是啥?),并不要求Java类是一个标准的Ja ...

  6. CUBRID学习笔记 44 UPDATE 触发器 更新多表 教程

    cubrid的中sql查询语法UPDATE c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com ...

  7. android上让我放弃使用wstring来操作中英文字符串 转

    android上让我放弃使用wstring来操作中英文字符串 2013-08-07 16:37:24|  分类: cocos2d|举报|字号 订阅     项目需要,需要对中英文字符串进行遍历修改等, ...

  8. LTE Module User Documentation(翻译6)——物理误差模型、MIMO模型、天线模型

    LTE用户文档 (如有不当的地方,欢迎指正!) 9 PHY Error Model   物理误差模型包含数据误差模型和下行控制误差模型,两者默认为激活.可以使用 ns-3 属性系统去激活,具体为:   ...

  9. HTML5时代的Web缓存机制

    HTML5 之离线应用Manifest 我们知道,使用传统的技术,就算是对站点的资源都实施了比较好的缓存策略,但是在断网的情况下,是无法访问的,因为入口的HTML页面我们一般运维的考虑,不会对其进行缓 ...

  10. mysql 并发控制

    1.多个线程同时修改数据,存在数据不一致的情况,也就是并发控制的问题.2.mysql提供读锁和写锁,读锁之上可以再加读锁,不能加写锁,而写锁之上不能加任何锁.也就是说,读锁是共享的,写锁是排他的.3. ...