這是我的看法骨幹爲什麼我的簡單骨幹視圖點擊事件不會觸發?
var TreeNode = Backbone.View.extend({
tagName : "span",
className : "ndelem dirnode",
events : {
"click" : "selectNode",
},
initialize : function() {
_.bindAll(this, "render", "selectNode");
$(this.el).append(this.model.get("fname")).attr({
"data-cid" : this.model.cid
});
},
render : function() {
this.delegateEvents();
return this;
},
selectNode : function(e) {
e.stopPropagation();
this.model.set({
isOpened : true
});
}
});
主要觀點
var TreeZone = Backbone.View.extend({
el : $("#nodes"),
initialize : function() {
this.collection.bind("add", this.list, this);
},
getHtml : function(elem) {
var newItem = $("<div/>").append(elem);
return newItem.html();
newItem.remove();
},
getSelectedItem : function() {
var selectedItem = $('#nodes').jqxTree('selectedItem');
if (selectedItem != null)
return selectedItem.element;
else {
var treeItems = $('#nodes').jqxTree('getItems');
var firstItem = treeItems[0];
return firstItem.element;
}
},
list : function(file) {
var node = new TreeNode({
model : file
});
var newItem = this.getHtml(node.render().el);
var element = this.getSelectedItem();
$('#nodes').jqxTree('addTo', {
html : newItem,
}, element);
$('#nodes').jqxTree('expandItem', element);
}
});
var tree = new TreeZone({collection:dircollection});
我將元素添加到集合的場景。
但樹節點點擊事件沒有觸發。只是我將原始html添加到樹節點,因爲樹不支持jquery對象。所以我想從獲取html函數獲取html。並把它交給樹。
如果你想爲你的視圖引用一個jQuery對象,你可以使用'this。$ el'而不是'$(this.el)'。有什麼地方可以查看? – Nalum
但爲什麼選擇節點沒有觸發 – user1834809
您是否檢查過樹節點的元素是否在DOM中,是否有大小,是否在您期望的位置,並且沒有被其他元素覆蓋? –