backbone.js 中view 重新渲染 后 原来 events 里面的事件失效啦
//定义视图 var AppView = Backbone.View.extend({ tagName: "Div", events: { "click #btnSearch": "onbtnSearchClick" }, initialize: function() { this.model = this.model; this.model.on("change", "ondataChange"); }, render: function() { var template = '<input type ="button" value="{{btnname}}" id="btnSearch">'; var html = Mustache.render(this.model.toJSON()); this.el.innerHTML = html; $("#content").empty().append(this.el) } ondataChange: function() { this.render(); }, onbtnSearchClick: function() { alert("按钮事件"); } }) //定义model var MyModel = Backbone.Model.extend({ initialize: function() {} }) $(function() { window.myModel = new MyModel; window.appView = new AppView({ model = myModel; }); appView.render(); }) //单击按钮 改变model function BtnCLick() { var name = Math.random(); window.myModel.set({ btnname: name }); }
当model 内容改变导致View 重绘的时候视图里面的按钮事件就没了
不知道是本来就是这样还是我写的有问题 ,大侠们帮忙看看
肯定失效啊,重绘后页面上的button不是原来的button了,只是id相同但是两个对象,事件没了。
重新加一下事件就行
怎么重新加载一下事件啊?重新new一遍view?
绑定事件不是在new view 初始化的时候绑定的么
@QA龙: 重新触发一下event事件应该可以
重新绘制页面元素后原有的事件需要重新触发绑定.可在render之后使用this.delegateEvents();即可