博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
backbone学习总结(二)
阅读量:6502 次
发布时间:2019-06-24

本文共 3077 字,大约阅读时间需要 10 分钟。

     今天来看下backbone的路由控制的功能。其实个人感觉backbone,模块就那么几个,熟悉它的框架结构,以及组成,就差不多。

废话不多说,我们来看看还剩下的功能。

关于路由和历史管理

 通过 Backbone.Router.extend 来创建路由模型,链接到不同的指定的动作和事件.当应用已经全部链接到路由时,需利用Backbone.history.start() 或者Backbone.history.start({pushState: true}) 来确保驱动初始化 URL 的路由。

我们来具体的看个列子:

//路由与历史管理                   var   Workplace  =  Backbone.Router.extend({        routers: {                "help" : "help" ,  //对应的调用方法  #help                 "search/:query" : "search" ,      #search/help                 "search/:query/p:page" : "search"  #search/query/p3        } ,         help : function(){                   console.log('111');                     //alert('111');          },         search : function(query , page){                     console.log('222');                     //alert('333');          }  });  var  w = new    Workplace ;    Backbone.history.start(); //保证路由在浏览器中有历史管理

 开始创建一个自定义的路由类。当匹配了 URL 片段便执行定义的动作,并可以通过routers 定义路由动作键值对。 注意:要避免在路由定义时使用前导斜杠!!!!!

关于事件委托

    什么叫事件委托呢?即事件代理,利用冒泡原理,将某一元素的事件,委托给其它元素处理的事件。

    好处:提高性能  |  新添加的元素,依然保留了该事件。

//事件委托 $(function(){                var   V  =  Backbone.View.extend({            el : $('body'),   //el当前的委托人。用BODY作为委托人            events : {        //事件                  'click  input' : 'aaa' ,                  'mouseover li ' : 'bbb'            },            aaa : function(){                   console.log('aa');            },            bbb : function(){                   console.log('bb')            }       });       var    view  = new  V;});

 看下html相对应的代码:

  • 11111111
  • 22222222
  • 33333333
  • 44444444

当点击Input时候,发生click事件,触发aaa,当鼠标移入li上时,触发bbb。

关于前端模板

  好处:更好的实现mvc机制,让js的操作与试图进行分离。通常是template:_.template($('#template').html())这种写法。

//前端模板 :更好的让js的操作与视图进行分离      $(function(){          var  M = Backbone.Model.extend({               defaults : {                     name : '婷风'               }          }) ;     //创建一个试图,listenTo比on多一个参数,改写了this指向          var  V = Backbone.View.extend({               initialize : function (){                     this.listenTo(this.model , ' change' , this.show); //操作的元素 | 数据发生改变的时候,发生show事件                },                show : function (model){                     $('body').append(this.template(this.model.toJSON()  )); //调用模板的方法                },                template : _.template($(' #template').html())            });           var   m  = new  M;            var   v  = new  V({model:m});           m.set('name' , 'jt' );     });

 html代码如下:

实例演练分析

  效果地址:

  下载地址:

  主页html代码如下:

  
Backbone.js Todos
   

Todos

    //包含每个li元素
    Double-click to edit a todo.

    关于backbone的js部分控制,这里不再贴码,可自行查看github 里面的官网例子,很详细的。这篇先到这里结束,之后,准备自己做点东西再贴出来。


    作者:婷风

     出处:

     如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意 

    转载文章之后必须在 文章页面明显位置给出作者和原文连接否则保留追究法律责任的权利。

     

    转载于:https://www.cnblogs.com/jtjds/p/5867193.html

    你可能感兴趣的文章
    spring自定义泛型类中AutoWired注入为null
    查看>>
    VMware克隆Linux系统后网卡无法启动(实测有效)
    查看>>
    OSPF小发现之记录
    查看>>
    DNS 问题解决 Host xxx.xxx.xxx.xxx not found :2(SERVFAIL) .
    查看>>
    编译hadoop1.2.1的hadoop-eclipse-plugin和配置
    查看>>
    我的友情链接
    查看>>
    and or not优先级
    查看>>
    Oracle控制文件移动
    查看>>
    Linux 下 SSH 协议创建与使用步骤
    查看>>
    Tomcat如何部署同一应用的不同版本
    查看>>
    Javascript获取当前时间戳的方法
    查看>>
    协议栈与网卡的名词解释
    查看>>
    RuntimeError - [Xcodeproj] Unknown object version
    查看>>
    LINUX随机数
    查看>>
    尺规院-性能测试指标计算
    查看>>
    介绍一款不错的远程协助软件pchelpware
    查看>>
    系统磁盘空间/dev/xvda1占满原因分析及解决方案
    查看>>
    RabbitMQ-Windows上安装使用rabbitmq
    查看>>
    解决CRT远程连接服务器特别慢
    查看>>
    centos7 安装samba4.1.1
    查看>>