我想清理我的代碼以獲得更好的可讀性,並將一些代碼放在額外的js文件中,但沒有任何我嘗試過的。如何分割代碼以提高可讀性?
這是一個子應用程序,並且仍然使用ExtJs 4.1的較大項目(Shopware)的一部分。
我有一個「main/window.js」,它擴展了'Ext.window.Window'。 initComponent看起來是這樣的:
initComponent: function() {
//...
me.dockedItems = [
me.createTopToolbar(),
];
//...
}
createTopToolbar裏面返回一個Ext.toolbar.Toolbar一些元素 「主/ window.js」 一個方法。
我的目標是把這個方法放在一個額外的文件中。
我試圖創建一個新的靜態/單身類這樣
Ext.define('myapp.myplugin.view.main.Toptoolbar', {
singleton: true,
createTopToolbar: function(){
// ...
return toolbar;
}
但裏面的「主/ window.js」我可以用myapp.myplugin.view.main.Toptoolbar.createTopToolbar不能稱之爲()或main.Toptoolbar.createTopToolbar()
在app.js我試圖把它列入這樣
views: [
'main.Window',
'main.Toptoolbar',
],
,但它不工作。
我沒有經驗與ExtJs和搜索小時......希望有人可以幫助我。
謝謝
編輯
要回答爲什麼我建立一個函數中的工具欄上的問題。 全功能看起來是這樣的:
createTopToolbar: function() {
var me = this;
var shopStore = Ext.create('Shopware.apps.Base.store.Shop');
shopStore.filters.clear();
shopStore.load({
callback: function(records) {
shopCombo.setValue(records[0].get('id'));
}
});
var shopCombo = Ext.create('Ext.form.field.ComboBox', {
name: 'shop-combo',
fieldLabel: 'Shop',
store: shopStore,
labelAlign: 'right',
labelStyle: 'margin-top: 2px',
queryMode: 'local',
valueField: 'id',
editable: false,
displayField: 'name',
listeners: {
'select': function() {
if (this.store.getAt('0')) {
me.fireEvent('changeShop');
}
}
}
});
var toolbar = Ext.create('Ext.toolbar.Toolbar', {
dock: 'top',
ui: 'shopware-ui',
items: [
'->',
shopCombo
]
});
return toolbar;
}
,我不希望我的 「主/ window.js」 裏面的整個代碼。 我不確定在這種情況下使用Jaimee提供的xtype解決方案,因爲我不真正擴展'Ext.toolbar.Toolbar'。我只需要「shopCombo」代碼的「包裝器」,並將shopCombo的「Ext.toolbar.Toolbar」作爲一個項目返回。
我很好奇你爲什麼要在一個函數中構建工具欄,你能解釋一下這個動機嗎? – Jaimee
@Jaimee我編輯了我的原始問題來解釋我的動機。 – Manuel
有兩種很好的模式。您可以創建工具欄作爲您通過xtype引用的新視圖,或將其添加爲混合。 – Alexander