//定义视图
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相同但是两个对象,事件没了。
重新绘制页面元素后原有的事件需要重新触发绑定.可在render之后使用this.delegateEvents();即可