Повторное использование расширенных компонентов в других представлениях с ExtJS4 MVC - PullRequest
1 голос
/ 24 февраля 2012

Я использую метод архитектуры 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

1 Ответ

1 голос
/ 24 февраля 2012

Да, это вполне разумно, но свойство меню должно быть экземпляром меню, идентификатором меню или конфигурацией объекта.

Я бы пошел с:

menu: {xtype: 'myappsavemenu'},

Документы ExtJS доступны онлайн. Конфигурация меню кнопки указана здесь: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.button.Button-cfg-menu

В общем, я только знакомлюсь с Ext.

Также обратите внимание, что первый метод, который я сейчас удалил, даст вам один и тот же экземпляр меню на всех панелях myapptoolbars. Это может или не может быть ужасной вещью в зависимости от того, что вы делаете. Я стараюсь держаться подальше от этого, так как это может быть трудно отладить при возникновении проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...