2013-11-22 3 views
1

Я использую EXT.JS 4 с MVC.extjs 4 MVC - форма не определена

У меня есть мнение и контроллер объявленную, как показано ниже:

просмотреть/компании/MarketData.js

Ext.define('Market.view.company.MarketData', { 
    extend: 'Ext.form.Panel', 
    requires: ['Market.store.HistoricalMarketData'], 
    store:'HistoricalMarketData', 
    xtype: 'companyMarketData', 
    initComponent: function() { 
     this.callParent(); 
    }, 
    items: [{ 
     xtype:'fieldset', 
     columnWidth: 0.5, 
     border:true, 
     padding:5, 
     //disabled:true, 
     collapsible: false, 
     defaultType: 'textfield', 
     defaults: {anchor: '100%'}, 
     layout: 'anchor', 
     items :[{ 
      fieldLabel: 'Time', 
      //xtype: 'displayfield', 
      name: 'time', 
      readOnly:true 
     }, { 
      fieldLabel: 'Open', 
      //xtype: 'displayfield', 
      name: 'open' 
     }, { 
      fieldLabel: 'High', 
      //xtype: 'displayfield', 
      name: 'high' 
     }, { 
      fieldLabel: 'Low', 
      //xtype: 'displayfield', 
      name: 'low' 
     }, { 
      fieldLabel: 'Close', 
      //xtype: 'displayfield', 
      name: 'close' 
     }, { 
      fieldLabel: 'Volume', 
      //xtype: 'displayfield', 
      name: 'volume' 
     }] 
    }] 
}); 

вид/контроллер/ChartController.js

Ext.define('Market.controller.ChartController', { 
    extend:'Ext.app.Controller', 
    stores:['HistoricalMarketData'], 
    models: ['MarketData'], 
    views: ['company.MarketData'], 
    init: function() { 
     this.control({ 
      '#companyChartItemId series[type=column]': { 
       itemmouseup:this.onItemMouseUp 
      }, 
      '#companyChartItemId': { 
       mouseenter:this.onMouseEnter 
      } 
     }); 
    }, 

    onItemMouseUp: function (item) { 
     //do something 
    }, 

    onMouseEnter: function (e) { 
     var view = this.getCompanyMarketDataView(); 
     var form = view.superclass.getForm(); 
     var store = this.getHistoricalMarketDataStore(); 
     var data = store.getAt(0); 
     form.loadRecord(data); 
    } 
}); 

проблема в том, что событие onmouseenter не определено:

onMouseEnter: function (e) { 
    var view = this.getCompanyMarketDataView(); 
    var form = view.superclass.getForm(); 

Любые мысли, как я могу восстановить форму с точки зрения?

+0

Помог ли мой ответ решить вашу проблему? – hermann

ответ

1

Вы можете использовать Ext.ComponentQuery.query(), который возвращает массив соответствующих компонентов.

Например

Ext.ComponentQuery.query('companyMarketData')[0].doSomething(); 

Это хорошая практика, чтобы использовать itemIds для компонентов.

Кроме того, вы пытались передать параметры по умолчанию функции onMouseEnter?

Вы, кажется, вызываете view.superclass.getForm(), но вы не передаете параметр вида, который должен быть первым по порядку. Вместо этого вы проходите e.

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