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

原文地址:https://www.cnblogs.com/hushufang/p/3580276.html