• backboneJS 使用心得(2)view和model事件的多次绑定(转载)


    一,new 一个新的View对象时,最好把,el参数传进去;而不是在view里面操作view的外部节点。

    比如:

    外部调用 var view=new BankboneView({el,$('body')});

    view内部: $(this.el).html(-template(...))

    二,如果所有的外部传入el都是同一个时,会造成事件的多次重复绑定。

    产生的原因是,backbone的view内部,事件的绑定都是基于this.el,$el这2个的,而我们在外部调用都用了同一个el,没有销毁过el节点。

    解决办法:

    采用动态创建的节点作为view的外部el节点。比如

     $('body').html('<div class="main"></div>')

    new view({el:$('.main')})

    三,model也会发生多次事件绑定

    产生的原因:由于有些model在整个应用当中,产生之后,一直没有销毁,那么如果view中,一般绑定的事件采用

    model.bind('all',function(){

    .....

    });

    当这个view被多次执行的时候,每次model数据变更,就会多次的执行绑定的事件;

    解决办法:model.unbind().bind(.....);

    四,underscore的_.bindAll()  函数

    这个函数可以把,指定的函数的执行上下文绑定到第一个参数;

    例如执行:

    _.bindAll(this,'render','show')

    之后,页面代码可以这样使用:

    collection.bind('all',this.render)

    原文地址:http://hi.baidu.com/mishe/item/511ceb55d7196809e6c4a563

  • 相关阅读:
    linux:centos7开启指定端口,开放外网访问
    zookeeper 集群搭建
    单机安装zookeeper的3.4.7版本
    CentOS7下安装jdk1.8并配置环境变量,防火墙设置开关
    Redis分布式锁的正确实现方式
    MySQl5.7 忘记密码怎么办?
    Flink 之Window(窗口)
    Flink之Sink(文件、Kafka、Redis、Es、Mysql)
    Canal同步Mysql数据至Hbase
    Flink 之分流Select与Split
  • 原文地址:https://www.cnblogs.com/hushufang/p/3580276.html
Copyright © 2020-2023  润新知