我有兩個div嵌套在父div下,我希望所有這些都是dojo.dnd的源代碼以及目標。我們可以在Dojo中嵌套目標嗎?
我希望能夠添加節點到內容被刪除的div,並且還允許用戶在3個div之間移動它。
事情是這樣的 - http://www.upscale.utoronto.ca/test/dojo/tests/dnd/test_nested_drop_targets.html
這在舊版本的Dojo實現我客串,並沒有按」似乎與1.4
來工作,是嵌套目標的支持刪除?有什麼辦法可以做到這一點?
我有兩個div嵌套在父div下,我希望所有這些都是dojo.dnd的源代碼以及目標。我們可以在Dojo中嵌套目標嗎?
我希望能夠添加節點到內容被刪除的div,並且還允許用戶在3個div之間移動它。
事情是這樣的 - http://www.upscale.utoronto.ca/test/dojo/tests/dnd/test_nested_drop_targets.html
這在舊版本的Dojo實現我客串,並沒有按」似乎與1.4
來工作,是嵌套目標的支持刪除?有什麼辦法可以做到這一點?
當前不支持嵌套源/目標。在大多數情況下,您可以通過使用獨立的源/目標來解決此限制,但可以按照您的需要使用CSS進行定位。
我對這種情況使用了一種解決方法。我創建了另一個DIV元素,它位於嵌套目標的相同位置,具有相同的寬度和高度,但具有較高的Z-Index值。然後新的DIV元素覆蓋嵌套的目標。當用戶試圖放下嵌套的目標時,他實際上掉到了上面的新DIV元素。只要新的DIV元素沒有嵌套在父放置目標中,Dojo的dnd操作就可以正常工作。我通常把新的DIV元素作爲body元素的子元素。
你需要做的是在onDndStart
中創建新的DIV並在onDndCancel
中銷燬它,然後一切都應該正常工作。
Dojo版本1.10仍不支持嵌套的Dnd。
CSS定位和覆蓋div沒有爲我工作。但我注意到,將元素從dndContainer拖出到父級dndContainer中並不會觸發父級的onMouseOverEvent。
在有人還在使用Dojo和有同樣的問題時,這裏是我的方法來解決這個問題:
聲明自己dndSource例如nestedDndSource.js
define([
"dojo/_base/declare",
"dojo/dnd/Source",
"dojo/dnd/Manager"
], function(declare,dndSource, Manager){
var Source = declare("dojo.dnd.Source", dndSource, {
parentSource: null,
onOutEvent: function(){
if(this.parentSource != undefined)
Manager.manager().overSource(this.parentSource)
Source.superclass.onOutEvent.call(this);
}
});
return Source;
})
使用nestedDndSource爲孩子而不是道場,並確保提供父爲parentSource參數的dndSource:
var parentDndSource = new dojoDndSource(parentNode, {..});
var childDnDSource = new nestedDndSource(childNode,{
parentSource: parentDndSource,
onDropExternal: ...
});
我試圖爲Dojo小部件構建一個DnD可視化編輯器。所以人們可以在視覺上構成用戶界面。所以只是把它們視覺上不會工作:( 我想能夠在div之間拖動組件,將div移入和移出div等 任何方式我們都可以實現這一點,我很自在地編寫一個自定義的DnD處理程序或使用DnD主題只需要正確的方向查找 – Rohit 2010-02-11 06:55:54
首先確保您不能使用dojo.dnd.move&co。這些文件支持傳統風格拖動,並且他們不認爲容器是列表。缺點是你必須自己處理「drop」,這並不難 - 你可以使用dojo.dnd代碼作爲cheatsheet。 – 2010-02-15 20:42:43