가독성을 높이기 위해 코드를 정리하고 여분의 js 파일에 코드를 넣고 싶지만 시도한 것은 아무것도 없습니다.가독성을 높이기 위해 코드를 분할하는 방법은 무엇입니까?
이것은 SubJApp이고 ExtJs 4.1을 사용하는 더 큰 Project (Shopware)의 일부입니다.
"Ext.window.Window"를 확장하는 "main/window.js"있습니다. 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;
}
좋아하지만 내가 myapp.myplugin.view.main.Toptoolbar.createTopToolbar를 사용하여 호출 할 수 없습니다 "/ 주요 window.js"안에 새로운 정적/싱글 톤 클래스를 만들려고() 또는 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"내부의 전체 코드를 싶지 않는 : 전체 기능은 다음과 같습니다. 정말 'Ext.toolbar.Toolbar'를 확장하지 않기 때문에이 컨텍스트에서 Jaimee이 제공 한 xtype 솔루션을 사용하고 있는지 잘 모르겠습니다. "shopCombo"코드에 "래퍼"가 필요하고 shopCombo를 항목으로 사용하여 'Ext.toolbar.Toolbar'를 반환하면됩니다.
나는 왜 당신이 함수 내에서 툴바를 만들고 있는지 궁금해하는데, 그 동기를 설명 할 수 있겠는가? – Jaimee
@Jaimee 나는 내 동기를 설명하기 위해 원래의 질문을 편집했다. – Manuel
두 가지 좋은 패턴이 있습니다. xtype에서 참조하는 새보기로 도구 모음을 만들거나 mixin으로 추가 할 수 있습니다. – Alexander