我想實現從extJs TreePanel拖放到頁面正文中的div。我一直在以薩基here爲例。從樹拖到div
到目前爲止,我有下面的代碼:
var contentAreas = new Array();
var tree = new Ext.tree.TreePanel({
title : 'Widgets',
useArrows: true,
autoScroll: true,
animate: true,
enableDrag: true,
border: false,
layout:'fit',
ddGroup:'t2div',
loader:new Ext.tree.TreeLoader(),
root:new Ext.tree.AsyncTreeNode({
expanded:true,
leaf:false,
text:'Tree Root',
children:children
}),
listeners:{
startdrag:function() {
$('.content-area').css("outline", "5px solid #FFE767");
},
enddrag:function() {
$('.content-area').css("outline", "0");
}
}
});
var areaDivs = Ext.select('.content-area', true);
Ext.each(areaDivs, function(el) {
var dd = new Ext.dd.DropTarget(el, {
ddGroup:'t2div',
notifyDrop:function(ddt, e, node) {
alert('Drop');
return true;
}
});
contentAreas[contentAreas.length] = dd;
});
拖動開始和股利的亮點,但是當我拿到過DIV它不顯示爲有效的放置目標和降失敗。
這是我第一次進入extJS。我是JQuery,現在我正在掙扎。
任何幫助,將不勝感激。
伊恩
編輯
而且如果我創建了一個面板中有一個下降的目標,這工作正常。創建一個元素和從DOM中選擇一個現有元素有什麼區別。這顯然是我錯了,但我不明智。我必須能夠選擇現有的dom元素並將它們設置爲放置目標,因此下面的代碼不是一個選項。
這裏是放置目標。如果您有問題的重複工作的例子如,複製整個事情,然後修改您的需要行由行工作
var target = new Ext.Panel({
renderTo: document.body
,layout:'fit'
,id:'target'
,bodyStyle:'font-size:13px'
,title:'Drop Target'
,html:'<div class="drop-target" '
+'style="border:1px silver solid;margin:20px;padding:8px;height:140px">'
+'Drop a node here. I\'m the DropTarget.</div>'
// setup drop target after we're rendered
,afterRender:function() {
Ext.Panel.prototype.afterRender.apply(this, arguments);
this.dropTarget = this.body.child('div.drop-target');
var dd = new Ext.dd.DropTarget(this.dropTarget, {
// must be same as for tree
ddGroup:'t2div'
// what to do when user drops a node here
,notifyDrop:function(dd, e, node) {
alert('drop');
return true;
} // eo function notifyDrop
});
}
});
謝謝,但這似乎沒有任何區別。這在JQuery中會很容易!因此,正在創建放置目標並正確存儲在contentAreas數組中。但即使認爲團隊是一樣的,這個下降也是無效的。有沒有一個函數來決定是否有效,我可以重寫呢?有任何想法嗎? – madcapnmckay 2010-08-02 19:44:54
您的代碼一目瞭然。有時使用CompositeElements/flyweight對象(相對於具有true arg的完整元素)不能像預期的那樣工作,但這只是一個猜測。如果你能展示你的HTML樣本,我敢打賭,我可以很容易地爲你解決它。很可能你的select沒有返回有效的元素,或者出於某種原因DropTargets沒有被這些元素正確初始化。 – 2010-08-02 22:23:14