ExtJS 5:在ViewController beforeInit中使用lookupReference

时间:2015-06-03 16:31:37

标签: extjs viewcontroller extjs5

我正在尝试在ViewController的beforeInit中查找对我的某个组件的引用,因此我可以在myComponent创建之前设置一些变量,但lookupReference不会在beforeInit调用中找到我的组件...它在ViewController的init方法中找到,但我假设因为视图实际上没有被渲染,所以没有创建引用。

所以我想我会尝试initComponent,但是再一次,lookupReference不能在那里工作......我知道我可以创建一个itemId并在initComponent中查找它,但这是最后的手段我......我宁愿使用参考文献。请参阅this Fiddle示例和代码:

Ext.application({
  name: 'Fiddle',

  launch: function() {
    Ext.define('MyViewController', {
      extend: 'Ext.app.ViewController',
      alias: 'controller.myview',

      beforeInit: function() {
        console.log('beforeInit: I want this to exist before myComponent is rendered', this.lookupReference('myComponent'));
      },

      init: function() {
        console.log('init', this.lookupReference('myComponent'));
      }
    });
    Ext.define('MyView', {
      extend: 'Ext.panel.Panel',
      controller: 'myview',
      title: 'My View',
      height: 400,
      width: 400,
      items: [{
        xtype: 'textfield',
        reference: 'myComponent',
        fieldLabel: 'My Component'
      }],
      initComponent: function() {
        // I want this to happen before myComponent is rendered
        console.log('initComponent: I want this to exist before myComponent is rendered', this.lookupReference('myComponent'));
        this.callParent();
        console.log('initComponent callParent', this.lookupReference('myComponent'));
      }
    });
    Ext.create('MyView', {
      renderTo: Ext.getBody()
    });
  }
});

有没有人对如何完成这样的事情有任何指导?

0 个答案:

没有答案