2016-09-29 10 views
0

Extjs 6バインドまたは直接割り当てのいずれかでビューに直接設定プロパティを割り当てる方法は?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); 
    } 
}); 

を、彼らはプロトタイプのプロパティであることと、そのクラスのすべてのインスタンス間で共有されるように、クラスレベルのプロパティとしてのオブジェクトを追加することに注意してください。

関連する問題