ExtJS 4.2可调整大小,可拖动的组件

时间:2013-11-29 11:35:16

标签: extjs components resizable

在我的代码中,我使用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。有谁知道问题在哪里?

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

它不起作用,因为您的代码仅设置配置属性,仅在组件初始化时处理。因此,当您在已构造的对象上设置这些属性时,没有任设置这些属性后,组件可调整性和可拖动性不会自动初始化。

您可以尝试使用Ext.Component initResizableinitDraggable方法。但这些方法是内部的,没有文档记录。

     callerObject.initResizable({
        pinned:true,
        dynamic:true
     });
     callerObject.initDraggable();

您也可以手动尝试为现有组件设置Ext.util.ComponentDraggerExt.resizer.Resizer