3
我試圖在兩個列表之間實現拖放功能。addEventDelegate拖放後拖放不會觸發
我可以將列表項從一個列表拖放到另一個列表。然而,在下降之後,第二個列表(它接收到該元素)不能再放棄。
我檢查了DOM並發現該列表沒有droppable類「ui-droppable」。這個類通過擴展OnAfterRendering使用jquery插件droppable添加到列表中。
我也發現,一旦List在收到元素後重新呈現,它就不會調用委託事件。
因此,基本上,我如何將funcationality添加回我的可拖動列表中,因爲它不調用委託事件?
代碼:
XML列表:
<HBox justifyContent="SpaceBetween">
<items>
<List
headerText='Players'
id='players'
items='{/players}'>
<layoutData>
<FlexItemData growFactor="1" />
</layoutData>
<items>
<ObjectListItem
title="{name}" >
<attributes>
<ObjectAttribute
title='Role'
text="{role}" />
<ObjectAttribute
title='Rating'
text="{rating}" />
</attributes>
</ObjectListItem>
</items>
</List>
<List
headerText='Playing XI'
id='playing'
items='{playing>/playing}'>
<layoutData>
<FlexItemData growFactor="1" />
</layoutData>
<items>
<StandardListItem
title="{playing>name}" />
</items>
</List>
</items>
</HBox>
控制器:
oDragList.addEventDelegate({
"onAfterRendering": function(oEvent) {
$("#" + idDragList + "-listUl li").sortable({
revert: true
});
$("#" + idDragList + "-listUl li").draggable({
helper: "clone"
});
}
});
oDragList.addEventDelegate({
"onAfterRendering": function(oEvent) {
$("#" + oDropListId + "-listUl li").sortable({
revert: true
});
$("#" + oDropListId).droppable({
drop: function(evt, ui) {
// debugger;
var oControl = ui.draggable.control()[0];
// debugger;
var oContext = oControl.getBindingContext().getObject();
var srcControl = evt.srcControl,
oPlayingModel = srcControl.getModel("playing");
oPlayingModel.getProperty("/playing").push(oContext);
oPlayingModel.refresh();
}
});
}
});
虛擬數據:將前
var data = [
{
name:"Sachin Tendulkar",
role:"Batsman",
rating:"100"
},
{
name:"Saurav Ganguly",
role:"Batsman",
rating:"78"
}
];
DOM拖動後:
是的,它會觸發下降事件,當你下降到第二個列表,但只有一次。刪除一個列表項然後再試一次。我想知道我的drop代碼中是什麼導致事件不會再被觸發。無法找到它。 –
它也正常工作多次。我可以拖放多次。 –
您正在將第二個** addEventDelegate **添加到** oDragList **中。您應該將其添加到** oDropList **。 –