extJs TreePanel에서 페이지 본문의 div로 드래그 앤 드롭 Senario를 구현하려고합니다. 나는 Saki here의 예를 따라 왔습니다.Tree에서 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 하이라이트하지만 난 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
코드가 잘 보입니다. 때로는 CompositeElements/flyweight 객체를 사용하는 경우 (실제 arg가있는 전체 요소가 아닌) 예상대로이 기능이 작동하지 않지만 추측에 불과합니다. HTML 샘플을 보여줄 수 있다면 쉽게 해결할 수있을 것입니다. 대부분의 경우 select가 유효한 요소를 반환하지 않거나 DropTargets가 어떤 이유로 이러한 요소로 올바르게 초기화되지 않았을 수 있습니다. –