我有一个 EditorView 子视图,它与Model
呈现一系列表单元素(输入复选框、文本区域)的子视图相关联。
我的 ListView 创建了一个且只有一个Editor 子视图。new EditorView(model: this.model). render();
ListView 通过单击 ListView 中的项目来创建 EditorView 。
这很好用。
但是,当事件附加到编辑器子视图时
// Bind to all properties in the view
events: {
"click input.isactive": "editActive"
},
该事件被触发多次......每个先前加载的 EditorViews 一次。好像许多人的 html 仍然存在。但是检查 DOM(在 Firefox 中)仅显示一个 EditorView 的 html。
我在 EditorView 中使用 .html(string),我认为它会替换 'el' 元素中的前一个 html。
var compiledTemplate = _.template( Template, data ); // Merge model with template
this.$el.html( compiledTemplate ); // replace the previous html if any. ?? OR NOT!! SOAD
谢谢
编辑器视图
el: ".editor",
tagName: "ul",
className : "striped",
events: {
"click .isactive": "editActive"
},
render : function() {
var data = {
item: this.model,
_: _
};
var compiledTemplate = _.template( Template, data ); // Merge model with template
this.$el.empty().html( compiledTemplate ); // replace the previous html
return this;
},
editActive: function(e) {
e.preventDefault();
var x = this.$('.isactive').prop('checked'); // property of input checkbox
alert('click'+x);
var y = this.model.set('Active', x);
}