我有一個與一個Model
關聯的EditorView子視圖,它呈現一系列表單元素(input checkbox,textarea)。骨幹事件被多次觸發
我的ListView創建一個也是唯一一個編輯器子視圖。 ListView通過點擊ListView中的項目來創建編輯器視圖,方法是new EditorView(model: this.model). render();
。
這很好。
但是,當事件被連接到編輯子視圖
// Bind to all properties in the view
events: {
"click input.isactive": "editActive"
},
會觸發該事件多次......每一次以前加載EditorViews。就好像許多HTML仍然存在一樣。但是檢查DOM(在Firefox中)只顯示一個EditorView的html。
我在EditorView中使用.html(字符串),我認爲它會替換'el'元素中的前一個html。
var compiledTemplate = _.template(Template, data); // Merge model with template
this.$el.html(compiledTemplate); // replace the previous html if any. ?? OR NOT!! SOAD
感謝
的EditorView
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);
}
jquery文檔「使用.empty()。html(字符串)而不是.html(字符串),以便在將新字符串分配給元素之前從文檔中刪除元素。」實際上沒有預期的功能 –