首页 > 代码库 > backbone事件绑定上下文this的使用
backbone事件绑定上下文this的使用
使用Backbone.js主要就是怎样将Backbone.Model,Backbone.Collection,Backbone.View三者进行组织起来,实现想要的业务逻辑。一个很核心的东西就是将Model跟View进行关联,Collection进行管理。在这个其中参数扮演一个重要的角色。
看一段简单的代码:
<style> *{padding:0;margin:0} </style> <div id="wrap" class="wrap"></div>
1 $(function(){ 2 var Model=Backbone.Model.extend({ 3 defaults:{ 4 name:‘AA‘, 5 age:‘BB‘ 6 } 7 }) 8 9 var C=Backbone.Collection.extend({ 10 model:Model 11 }) 12 13 var c = new C() 14 15 var main = Backbone.View.extend({ 16 el:‘div‘, 17 template:_.template($(‘#main‘).html()), 18 events:{ 19 ‘click .btn‘:‘add‘, 20 ‘click #testCollection‘:‘submitData‘ 21 }, 22 initialize:function(){ 23 this.render() 24 c.on(‘add‘,this.create,this) //在回调函数里,调用View 上面的函数的时候需要提供上下文,即第三个参数 25 }, 26 render:function(){ 27 $(‘#wrap‘).html(this.template()) 28 }, 29 add:function(){ 30 var m=new Model() 31 c.add(m); 32 }, 33 create:function(obj){ //通过collection的add事件触发 34 this.addItem(obj) //如果事件绑定时没有提供上下文参数会报错 35 }, 36 addItem:function(obj){ 37 var item = new Item({model:obj}); 38 $("#items").append(item.render().el) 39 }, 40 submitData:function(){ 41 console.log(c.toJSON()) 42 } 43 }) 44 45 var Item=Backbone.View.extend({ 46 tagName:‘li‘, 47 template:_.template($(‘#item‘).html()), 48 render:function(){ 49 $(this.el).html(this.template(this.model.toJSON())); 50 return this; 51 } 52 }) 53 54 var view = new main() 55 })
<script id="main" type="text/template"> <div style="width:300px;height:500;border:1px solid #ccc;margin:0 auto" > <ul id="items"></ul> <div><button class="btn">click btn</button><button id="testCollection">test collection</button></div> </div> </script> <script id="item" type="text/template"> <span><%=name%></span>:<span><%=age%></span> </script>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。