Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.07.2012, 19:19
Новичок на форуме
Отправить личное сообщение для TSEH25 Посмотреть профиль Найти все сообщения от TSEH25
 
Регистрация: 27.06.2012
Сообщений: 8

Не работает push! Динамическая вставка
Ребята спасайте, 5 день мучаюсь!!!
Ext.define("App.module.Calendar", {
    extend : "Ext.grid.Panel",

    requires : ["App.models.System", 'App.models.WorkType'],

    store : null,
    title : 'Календарь',
    iconCls : "calendar16",
    id: 'tsl',
    dockedItems: [],

    initComponent : function () {

        this.dockedItems = [
            {
                xtype:'toolbar',
                id: 'ttl',
                dock:'top',
                renderTo: document.body,
                items:[ Какой то код и выдов me.head1()]
            }
        ],

    head1 : function () {
        this.dockedItems.push(Ext.create('Ext.grid.Panel', {
            columns: [
                { header: '<b>Кол-во работ :</b>',  dataIndex: 'name' },
                { header: '<b>2</b>', dataIndex: 'email', width : 27, align: 'center' },
                { header: '<b>5</b>', dataIndex: 'phone', width : 27, align: 'center' },
                { header: '<b>0</b>', dataIndex: 'phone', width : 27, align: 'center' }
            ]
            //renderTo: Ext.getBody()
        }))
           }


       )


    },

Когда я в initComponent делаю this.dockedItems.push все соответственно работает, но когда в head1, ни чего не работает!!
Вопрос почему push не работает в функции head1? (this.dockedItems.push is not a function)
add ошибок вроде не выдает, но ничего не изменяется. Может нужен рендер? как его реализовать?
this.dockedItems.items.push в head1 тоже ошибок не дает, но нечего не меняет!
insert вставляет, но просто полоску(грид не работает, даже если явно указать ширину и высоту, будет просто квадрат)!!
Как можно вставить грид? выручайте ребята!
Ответить с цитированием
  #2 (permalink)  
Старый 02.07.2012, 19:44
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Какого хрена me.head1() у тебя делает в items если он нечего не возвращает.

И где обьявлен me ???

items:[ Какой то код и выдов me.head1()] - эту строчку надо бы поподробнее расписать
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 02.07.2012 в 19:56.
Ответить с цитированием
  #3 (permalink)  
Старый 03.07.2012, 00:47
Новичок на форуме
Отправить личное сообщение для TSEH25 Посмотреть профиль Найти все сообщения от TSEH25
 
Регистрация: 27.06.2012
Сообщений: 8

var me = this

это выше, я просто не указал, судь не в этом, главное что функция вызываеться, в items есть combobox, там linester:select вызывает head1

ты намекаешь на то что надо добавить return в head1?
Ответить с цитированием
  #4 (permalink)  
Старый 03.07.2012, 07:01
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Судя по этому пример items:[ Какой то код и выдов me.head1()]
me.head1() - находитя внутри обьявления массива. Обычно когда вставляют вызов функции в массив пдразумевают что она вернёт в него значение.
z=[  f(1), f(2) ];
function f(x){  return x*10; }
alert(z);//10,20

Странно в объявление массива, вставлять вызов функции просто так

Внутри функции head1, что то не так со свойством this.dockedItems. This получен из me, что не так с me? "это выше, я просто не указал," где выше ? Может me вообще перед define указан. Чего ещё нет в примере?

Короче инфы мало, нужен код, ты помоему всё самое интересное опустил

ЗЫ. Навсякий случай я попробывал воспроизвести ошибку.
this_={
  dockedItems:{ push:"1"}, //вместо функции у нас будет какая-то непонятная фигня :)
  t:[] // обьявим массив
};
this_.t.push="1";      
//this_.dockedItems2.push (10);// this_.dockedItems2 is undefined (firefox) это не то
//this_.dockedItems.push (10);//this_.dockedItems.push is not a function (firefox)
// this_.t.push(1);  // this_.t.push is not a function  (firefox)
this_.dockedItems.push2 (10);// this_.dockedItems.push2 is not a function (firefox)
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 03.07.2012 в 08:29.
Ответить с цитированием
  #5 (permalink)  
Старый 03.07.2012, 11:43
Новичок на форуме
Отправить личное сообщение для TSEH25 Посмотреть профиль Найти все сообщения от TSEH25
 
Регистрация: 27.06.2012
Сообщений: 8

Ext.define("App.module.Calendar", {
    extend : "Ext.grid.Panel",

    requires : ["App.models.System", 'App.models.WorkType'],

    store : null,
    title : 'Календарь',
    iconCls : "calendar16",
    id: 'tsl',
    dockedItems: [],

    initComponent : function () {
        var me = this;
        this.dockedItems = [
            {
                xtype:'toolbar',
                id: 'ttl',
                dock:'top',
                renderTo: document.body,
                items:[
                        [Ext.create('Ext.form.ComboBox', {
                        store : Ext.create('Ext.data.Store', {
                            model : 'App.models.System'
                        }),
                        displayField : 'name',
                        valueField : 'id',
                        typeAhead : true,
                        editable:false,
                        triggerAction : 'all',
                        pageSize: 24,
                        emptyText : 'Выбор системы...',
                        width : 300 ,
                        listeners : {
                            select : function () {
                                me.store.proxy.extraParams['system_id'] = records[0].get('id')
                                me.store.load(
                                function() {
                                this.each(function() {
                                тут я получаю масив...
                                });
                            me.head1() // вот тут вызов head1 после того как получен масив
                        }

                        );

                        }
                        }
                        })]

                    ,{
                        xtype : 'button',
                        text : 'Показать все наименования',
                        handler : function () {
                            me.store.load()
                        }
                    }
                ]
            }
        ]
},

    head1 : function () {
// эта функция должна вставить grid в под combobox и между другим гидом, после того как произойдет событие select в combobox.
 this.dockedItems.push(Ext.create('Ext.grid.Panel', {
            columns: [
                { header: '<b>Кол-во работ :</b>',  dataIndex: 'name' },
                { header: '<b>2</b>', dataIndex: 'email', width : 27, align: 'center' },
                { header: '<b>5</b>', dataIndex: 'phone', width : 27, align: 'center' },
                { header: '<b>0</b>', dataIndex: 'phone', width : 27, align: 'center' }
            ]
            


    }
Изображения:
Тип файла: jpg 1.jpg (7.5 Кб, 7 просмотров)
Ответить с цитированием
  #6 (permalink)  
Старый 03.07.2012, 13:00
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

me.head1() - срабатывает тогда когда срабатывает select. Тоесть на этот момент, обьект на который указывает this уже давно создан. После того как обьект создан метаться поздняк , то есть запихнуть в dockedItems как в массив уже нечего не получится. Судя по всему массив dockedItems заменяется обьектом после отработки функции initComponent. Это обьясняет почему в dockedItems нет функции push, хотя само свойство существует.

Должно быть другое решение, просто в контейнер можно было через add добавить,

//просто пример, это может быть не обязательно тулбар
tb = new Ext.toolbar.Toolbar({
    renderTo: document.body
});  
tb.add([{text:'Button 1'}, {text:'Button 2'}]);

а вот в докед итемс неприходилось, попробую посмотреть как до дома добирусь.
Но думаю можно попробывать panel.addDocked({ ... });
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 03.07.2012 в 13:18.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
Не работает код внутри циклов DZHETIGAPA Events/DOM/Window 1 21.06.2011 01:03
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 15:59
Динамическая вставка объектов cathunter jQuery 2 09.12.2009 17:48
Скрипт меню-гармошки работает выборочно Extern Элементы интерфейса 2 23.02.2009 15:32