当我的应用程序是 RTL 时,如何解决 Extjs 中的问题?
How to fix issue in Extjs when my app is RTL?
当我将面板放在非放置区时,Extjs 以错误的方向将拖动元素动画回源元素,如何解决此问题?
这是我的 Dragzone 和 DropZone 代码,当我将我的应用程序更改为 LTR 时它很好,当我将其切换回 RTL 时问题再次出现。
function calEventPnlSourceDD(sender){
sender.mX=sender.getX();
sender.dragZone = new Ext.dd.DragZone(sender.getEl(), {
ddGroup: 'dgCal',
getDragData: function(e) {
var sourceEl = e.getTarget(sender.itemSelector, 10);
if (sourceEl) {
/*sourceEl=sourceEl.parentElement;*/
d = sourceEl.cloneNode(true);
d.id = Ext.id();
return {
ddel: d,
sourceEl: sourceEl,
repairXY: Ext.fly(sourceEl).getXY()
}
}
},
getRepairXY: function() {
return this.dragData.repairXY;
},
onDrag: function(e) {
}
});
}
function calEventPnlTargetDD(sender){
sender.dropZone = new Ext.dd.DropZone(sender.el, {
ddGroup: 'dgCal',
isDropAllowed: false,
getTargetFromEvent: function(e) {
return e.getTarget(sender.rowSelector);
},
getAllowed: function(e) {
var proto = Ext.dd.DropZone.prototype;
var tg=e.target;
this.isDropAllowed=true;
return proto.dropAllowed;
},
notifyOver: function(source,e,data) {
return this.getAllowed(e);
},
onNodeDrop: function(target, dd, e, data) {
return this.isDropAllowed;
}
});
9 天后我找到了问题的原因,在我的本地文件 local-he.js 我删除了这一行:
Ext.define('Ext.locale.container.Viewport',{override:'Ext.container.Viewport',requires:['Ext.rtl.*'],rtl:!0});
因为我已经在 UniMainModule 中将我的应用程序定义为 RTL。
我使用 Unigui 框架 Delphi :-)
当我将面板放在非放置区时,Extjs 以错误的方向将拖动元素动画回源元素,如何解决此问题?
这是我的 Dragzone 和 DropZone 代码,当我将我的应用程序更改为 LTR 时它很好,当我将其切换回 RTL 时问题再次出现。
function calEventPnlSourceDD(sender){
sender.mX=sender.getX();
sender.dragZone = new Ext.dd.DragZone(sender.getEl(), {
ddGroup: 'dgCal',
getDragData: function(e) {
var sourceEl = e.getTarget(sender.itemSelector, 10);
if (sourceEl) {
/*sourceEl=sourceEl.parentElement;*/
d = sourceEl.cloneNode(true);
d.id = Ext.id();
return {
ddel: d,
sourceEl: sourceEl,
repairXY: Ext.fly(sourceEl).getXY()
}
}
},
getRepairXY: function() {
return this.dragData.repairXY;
},
onDrag: function(e) {
}
});
}
function calEventPnlTargetDD(sender){
sender.dropZone = new Ext.dd.DropZone(sender.el, {
ddGroup: 'dgCal',
isDropAllowed: false,
getTargetFromEvent: function(e) {
return e.getTarget(sender.rowSelector);
},
getAllowed: function(e) {
var proto = Ext.dd.DropZone.prototype;
var tg=e.target;
this.isDropAllowed=true;
return proto.dropAllowed;
},
notifyOver: function(source,e,data) {
return this.getAllowed(e);
},
onNodeDrop: function(target, dd, e, data) {
return this.isDropAllowed;
}
});
9 天后我找到了问题的原因,在我的本地文件 local-he.js 我删除了这一行:
Ext.define('Ext.locale.container.Viewport',{override:'Ext.container.Viewport',requires:['Ext.rtl.*'],rtl:!0});
因为我已经在 UniMainModule 中将我的应用程序定义为 RTL。
我使用 Unigui 框架 Delphi :-)