我与工人及其任务进行了规划,现在我需要通过轻松修改约会来改进它。我想知道是否可以进行一些拖放来移动任务并改变其持续时间?
我认为是,但我在互联网上找到的所有东西都不适合mvc应用程序。由于规划是在一个视图中,我只想在视图的控制器中完成我的工作。
编辑:在我的控制器中,我执行了以下代码:
onInit : function(){
var oView = this.getView();
//load jquery libraries for drag n drop
jQuery.sap.require("sap.ui.thirdparty.jqueryui.jquery-ui-core");
jQuery.sap.require("sap.ui.thirdparty.jqueryui.jquery-ui-widget");
jQuery.sap.require("sap.ui.thirdparty.jqueryui.jquery-ui-mouse");
jQuery.sap.require("sap.ui.thirdparty.jqueryui.jquery-ui-draggable");
jQuery.sap.require("sap.ui.thirdparty.jqueryui.jquery-ui-droppable");
//make the appointments drag n droppables
var oAppointment = oView.byId("draggable");
var idAppointment = oAppointment.getId();
oAppointment.onAfterRendering = function(){
$("#"+idAppointment).draggable({
cancel:false
})
};
}
draggable
ID设置为我的CalendarAppointments,如下所示:
<appointments>
<unified:CalendarAppointment
id="draggable"
startDate="{CustomModel>EarlSchedStartdate}"
endDate="{CustomModel>EarlSchedFindate}"
title="{CustomModel>Description}">
</unified:CalendarAppointment>
</appointments>
在一个只有一个按钮的单独项目中,它可以正常工作,但它不适用于我的计划约会。
答案 0 :(得分:1)
我们通过扩展控件使得Drag和Drop与PlanningCalendar很好地协同工作。
IMO在控制器中执行这种DOM逻辑没有意义。
“Dom操作不应存在于控制器,服务或 除了指令“
之外的任何地方
AngularJS最佳实践,将指令替换为UI5的控件或组件
jQuery UI不支持触摸,因此无法在手机,平板电脑或触摸屏中使用,道路测试了许多替代Drag和Touch库,一些很酷的东西,大部分都是需要的东西,本机JS和标准的SAPUI5尽可能地控制事件处理,在需要的地方回退到jQuery。
在PlanningCalendar中 - 在约会的onAfterRendering中添加了一个事件委托,有条件地添加了像draggable和鼠标光标这样的元素样式,用于调整大小等。
在CalendarROW控件中添加了类似的事件代理,在PlanningCalendar中也很容易,他们设置了可放置区域并管理时间冲突等。
很多学习都在研究KendoUI Scheduler和Widjimo Events Calendar的来源,两者都与OData很好地配合。建议任何必须添加不在SAPUI5中的功能的人去查看这些和类似的UI库以获取灵感。
我对最终结果感到非常满意,与OData V2无缝地运行Batch,缺少一个ghost功能(sap.ui.dt.plugin.DragDrop中的一些代码为此,从未得到过添加它)和承诺通过控制器或回调等处理事件