Ext.Container を拡張してベース コンテナを開発しようとしていましたが、これにはいくつかのデフォルト アイテムが含まれています。サブクラスは、項目をコンテナーに直接ではなく、基本クラスの子コンポーネントに追加する必要があります。これを行う方法?setItems / applyItemsメソッドをオーバーライドして、項目を navigationView.add(items); に追加できますか? ?? これがどのように機能するかわかりません。私はExtJsを初めて使用するため、インラインまたはadd(item)メソッドを使用してn個のアイテムを追加するサブクラスに影響を与えないように、一般的に行う方法を特定できません。
抽象クラス
Ext.define('MyApp.container.AbstractMainContainer', {
extend: 'Ext.Container',
xtype: 'abstractmaincontainer',
requires: [
'MyApp.container.NavigationView',
'MyApp.control.NavigationBar'
],
config: {
layout: {
type: 'vbox',
pack: 'start',
align: 'stretch'
},
flex: 1,
height: '100%',
width: '100%'
},
controller: 'maincontroller',
items: [{
xtype: 'navbar',
itemId: 'navbar'
}, {
xtype: 'navigationview',
itemId: 'navigationview',
reference: 'navigationview',
navigationBar: false,
layout: {
pack: 'start',
align: 'stretch'
},
flex: 1,
height: '100%',
items: [
// new item should added here
]
}],
/**
* @method getContentView add the items to this rather than directly
* @return {void}
*/
getContentView: function() {
return this.down('#navigationview');
},
});
サブクラス
Ext.define('MyApp.main.view.MainContainer', {
extend: 'MyApp.container.AbstractMainContainer',
requires: [
'MyApp.container.AbstractMainContainer'
],
config: {
},
items: [{
// we should not directly add items here this will remove the navbar and navigation view
// HOW TO ADD THIS IN A GENERIC WAY??
xtype: 'container',
layout:{
type:'card'
},
items: [{
xtype: 'button',
role: 'nav',
title: 'Card 1',
text: 'go to next',
handler: function() {
}
}, {
itemId: 'myCard',
title: 'Card 2',
html: '<h1>Card 2</h1>'
}],
}],
});