2013-11-29 3 views
2

В моем коде я использую архитектуру MVC. Мой взгляд Компонент выглядит следующим образом:ExtJS 4.2 изменчивый, перетаскиваемый компонент

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); 
} 
}); 

Im обжиг Событие по щелчку на контроллер, который выглядит так:

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. Кто-нибудь знает, где проблема?

Спасибо за reponses.

+0

«это просто не работает» на самом деле не описание проблемы. Вы должны добавить некоторые детали. – zero323

ответ

0

Он не может работать, потому что ваш код задает только параметры конфигурации, которые обрабатываются только при инициализации компонента. Поэтому, когда вы устанавливаете эти свойства на уже построенном объекте, ничего не происходит. После настройки этих свойств автоматически изменяются параметры компоновки и перетаскивания компонентов.

Вы можете попробовать Ext.ComponentinitResizable и initDraggable методов. Но эти методы являются внутренними и недокументированными.

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

Также вы можете попробовать программу настройки Ext.util.ComponentDragger и Ext.resizer.Resizer для существующего компонента вручную.

+0

Спасибо, ты решил мою проблему ... – brokenCode

Смежные вопросы