在我的代码中,我使用MVC架构。我的视图Component看起来像这样:
Ext.define('calendar.view.event', {
extend: 'Ext.Component',
alias: 'widget.event',
renderTo: Ext.getBody(),
initComponent:function(){
this.addEvents('eventClick');
this.callParent(arguments);
},
afterRender: function() {
this.mon(this.el, 'click', this.eventClick, this); //mon( item, ename, [fn], [scope], [options] ) - zkratka pro addManagedListener.
this.callParent(arguments);
},
eventClick: function (ev, t) {
var height = this.getHeight();
this.fireEvent('eventClick', this, height, ev);
}
});
点击控制器点击事件,如下所示:
Ext.define('calendar.controller.eventsChange', {
extend: 'Ext.app.Controller',
views: ['event'],
init: function () {
this.control({
'event': {
eventClick: function (callerObject) {
this.editEvent(callerObject)
}
}
});
},
editEvent: function (callerObject) { //oznaci jako editovatelny
callerObject.get
if(callerObject.hasCls('SpecEv') || callerObject.hasCls('activeEvent'))
{
if (callerObject.hasCls('activeEvent'))
{
callerObject.removeCls('activeEvent');
callerObject.addCls('SpecEv');
this.application.fireEvent('reRender');
}
else
{
console.log(callerObject);
callerObject.addCls('activeEvent');
callerObject.removeCls('SpecEv');
Ext.apply(callerObject, {
resizable: {
pinned:true,
dynamic:true
},
draggable: true,
});
callerObject.setLocalX(0);
var parentWidth = Ext.getCmp('SpecEv').getWidth();
callerObject.setWidth(parentWidth);
}
}
}
});
使用
时出现问题Ext.apply(callerObject, {resizable: {
pinned:true,
dynamic:true
},
draggable: true,
});
当console.log在我的申请后显示对象时,它表示draggable:true和resizable:true。有谁知道问题在哪里?
感谢您的回复。
答案 0 :(得分:0)
它不起作用,因为您的代码仅设置配置属性,仅在组件初始化时处理。因此,当您在已构造的对象上设置这些属性时,没有任设置这些属性后,组件可调整性和可拖动性不会自动初始化。
您可以尝试使用Ext.Component
initResizable
和initDraggable
方法。但这些方法是内部的,没有文档记录。
callerObject.initResizable({
pinned:true,
dynamic:true
});
callerObject.initDraggable();
您也可以手动尝试为现有组件设置Ext.util.ComponentDragger
和Ext.resizer.Resizer
。