1
對於我正在構建的用戶界面,我正在使用mvc體系結構方法。我有,我想重用,並想知道,如果以下是可能的菜單:在ExtJS4中重用其他視圖中的擴展組件MVC
文件結構:
app/
--->app.js
--->view/
--------->viewport.js
--------->Toolbar.js
--------->SaveMenu.js
viewport.js:
Ext.define('MyApp.view.Viewport', {
extend: 'Ext.container.Viewport',
layout: 'fit',
requires: [
'MyApp.view.Toolbar',
'MyApp.view.SaveMenu',
],
initComponent: function() {
this.items = {
dockedItems: [
{
dock : 'top',
xtype : 'myapptoolbar',
height : 40,
}
]
...
// more config, but this works now.
Toolbar.js
Ext.define ('Myapp.view.Toolbar', {
extend : 'Ext.toolbar.Toolbar',
alias : 'widget.myapptoolbar',
items : [
{
text : 'Save',
// The following doesn't work, is there another way to achieve this?
menu : 'myappsavemenu',
}
]
});
SaveMenu.js
Ext.define ('Myapp.view.SaveMenu', {
extend : 'Ext.menu.Menu',
alias : 'widget.myappsavemenu',
items : [
{
text : 'Save as...',
}
]
});
是否有可能在其他視圖中重複使用先前定義的視圖組件,如果有的話,我該如何去做這件事?
編輯 - 忘記使用這個配置時拋出的錯誤:
Uncaught TypeError: Cannot set property 'ownerCt' of undefined
謝謝,但我得到這個:Uncaught TypeError:無法調用未定義的方法'substring' Ext.ClassManager.parseNamespace – 2012-02-24 15:40:15
嗯,我沒有看到你是靜態設置你的項目。你可以嘗試'menu:{xtype:'myappsavemenu'},'而不是。 – 2012-02-24 15:57:42
非常感謝David,這兩種方法實際上都有效。在嘗試第一種方法時,我遇到了一個我沒有注意到的錯字。你能指出我從你從哪裏學到的方向,或者你有一個簡潔的解釋嗎? – 2012-02-24 16:03:27