2016-09-29 2 views
0

В Extjs 6 как назначить свойство config непосредственно для представления через привязку или прямое назначение?Как указать свойство конфигурации для представления Элемент в Extjs 6?

Ext.define('App.view.main.Main', { 
extend: 'Ext.Container', 

config: { 
    btnLabel: 'MyButton' 
}, 

someOtherProperty:'xyz', 

items: [{ 
    xtype:'button', 

    //text:this.someOtherProperty, 
    //text:this.btnLabel, 
    //text:this.getBtnLabel(), 

    //here accessing this throws error, while loading this refers to windows object and not the class... 
    width:'150px' 
    }], 
}); 

я могу переместить свойство ViewModel и доступ к нему, но мой вопрос заключается в следующем, мы не можем присвоить уровень свойства класса для его дочернего компонента?

ответ

1

Ну, не так, как вы не можете. Проблема в том, что вы определяете элементы в прототипе класса - это означает, что вы не можете сделать ничего конкретного для этого экземпляра.

Это то, что initComponent для. Я обычно определяют свой атрибут items там, специально для этой цели:

Ext.define('App.view.main.Main', { 
    extend: 'Ext.Container', 
    config: { 
    btnLabel: 'MyButton' 
    }, 
    someOtherProperty:'xyz', 

    initComponent: function() { 
    // The config properties have already been transferred to the instance 
    // during the class construction, prior to initComponent being called. 
    // That means we can now call this.getBtnLabel() 
    this.items = [ 
     { xtype: 'button', 
     text: this.getBtnLabel(), 
     width:'150px' 
    }] 

    // Call the parent function as well. NB: After this, items won't be 
    // a simple array anymore - it gets changed into a collection of 
    // components. 
    this.callParent(arguments); 
    } 
}); 

В общем, будьте осторожны при добавлении объектов в качестве свойств уровня класса, так как они будут свойства на прототипе и распространяется среди всех экземпляров этого класса.

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