我试图通过扩展 Ext.Container 来开发一个基本容器,其中包含一些默认项。子类应该将项目添加到基类的子组件中,而不是直接添加到容器中。这个怎么做?我可以覆盖setItems / applyItems方法以将项目添加到 navigationView.add(items); ?? 我不确定这是如何工作的。由于我是 ExtJs 的新手,因此无法确定哪种方法是通用的,因此它不会影响我的子类使用 inline 或 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>'
}],
}],
});