Показать сообщение отдельно
  #1 (permalink)  
Старый 30.06.2013, 09:47
Новичок на форуме
Отправить личное сообщение для kolikolikoli Посмотреть профиль Найти все сообщения от kolikolikoli
 
Регистрация: 30.06.2013
Сообщений: 1

grid in grid in window
Здравствуйте. Пишу MVC приложение.

Есть два класса grid:

Grid1 с кнопкой "добавить телефоны":
Ext.define('AM.view.Grid1' ,{
    extend: 'Ext.grid.Panel',
    alias: 'widget.employeeList',
    title: 'Сотруднички',
    store: 'Employees',
    columns: [
        {header: 'Имя',
           dataIndex: 'name',
           flex: 1}
],
    bbar: [
        {text: 'Добавить телефоны',
        action: 'add'}
         ]
})


Grid2:
Ext.define('AM.view.Grid2' ,{
    extend: 'Ext.grid.Panel',
    alias: 'widget.phoneList',
    title: 'Телефоны',
     store: 'Phones',
    columns: [
        {header: 'Телефон',
            dataIndex: 'phones',
            flex: 1}
    ]
})


Grid1 отображается с запуска приложения.
app.js:
Ext.application({
    name: 'AM',

    appFolder: 'app',

    controllers: [
        'Employees'
    ],

    launch: function() {
        Ext.create('Ext.container.Viewport', {
            layout: 'fit',
            items: {
                xtype: 'employeeList'
            }
        });
    }
});


По нажатию на кнопку в grid1 "добавить телефоны" , вызывается окно с grid2:
Ext.define('AM.view.EmployeeWindowAdd', {
    extend: 'Ext.window.Window',
    alias : 'widget.employeeAdd',
    title : 'Добавить телефоны',
    layout: 'column',

    items: [{
        xtype: 'phoneList',
    }],


Вот тут и проблема. Окно (EmployeeWindowAdd) делается продолжением панели grid1, т.е к панели gri1 прикрепляется еше панелька окна(EmployeeWindowAdd). Если например убрать
items: [{
        xtype: 'phoneList',
    }],
, то окно будет открывается как надо, т.е поверх grid1. .

Я думаю это из-за того что мы делаем и в грид1 и в грид2 extend: 'Ext.grid.Panel', т.е расширяем одну и ту же стандартную панель? Если да, то подскажите пожалуйста как сделать правильно.

Вот контроллер:
Ext.define('AM.controller.Employees', {
    extend: 'Ext.app.Controller',

     views: [
         'Grid1',
         'Grid2',
         'EmployeeWindowAdd',
     ],
    stores: ['Employees', 'Phones'],
    models: ['Employee', 'Phone'],


    init: function(){
        this.control({
            'employeeList button[action=add]': {
                click: this.editPersonAddClick
            }


        })
    },

    editPersonAddClick : function(){
      var view = Ext.widget('employeeAdd');
    },       
})

Последний раз редактировалось kolikolikoli, 30.06.2013 в 09:59.
Ответить с цитированием