Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   initComponent: Как получить данные родителя и как получить store для вызова load()? (https://javascript.ru/forum/extjs/56516-initcomponent-kak-poluchit-dannye-roditelya-i-kak-poluchit-store-dlya-vyzova-load.html)

khusamov 21.06.2015 22:05

Цитата:

Тут я сильно сомневаюсь, у меня любое изменение приводит к очередным ошибкам,
в данном случае не будет проблем, так как я слежу за изменениями

а так у меня аналогичные запарки были, спасибо обитателям этого форума - многие вопросы были решены

Пролетарий 21.06.2015 22:06

Цитата:

Сообщение от khusamov (Сообщение 375993)
Еще кое что нужно.

Прокси описывайте в моделях, а не в хранилищах.

Я думал наоборот правильно в сторах прокси писать, а в моделях - это для хипстеров. :)

Пролетарий 21.06.2015 22:07

Цитата:

Сообщение от khusamov (Сообщение 375994)
для данного пример я так понял это действительно не критично. Главное чтобы на сервер посылался запрос, в котором будет присутствовать номер Ордера, верно?
если да, то мы это в примере сделаем.

Да, именно так.

Пролетарий 21.06.2015 22:08

Цитата:

Сообщение от khusamov (Сообщение 375995)
пока все
жду когда внесете эти правки и можно будет дальше работать.

Не думаю что это поможет, но сделаю. Из-за того что в песочнице не всё так просто и пытаюсь всегда словами передать проблему.

khusamov 21.06.2015 22:09

Цитата:

Я думал наоборот правильно в сторах прокси писать, а в моделях - это для хипстеров.
аналогично
сенча многое делает как-то странно, но в общем нормально получается...

кстати, предложение: если эта задача не кспеху, можно в среду-четверг ее быстро окучить по тимвиверу и скайпу
я просто сейчас работаю и не могу много уделять времени

Пролетарий 21.06.2015 22:10

Цитата:

Сообщение от khusamov (Сообщение 375996)
Кстати, я совсем забыл. Вы этот пример http://dev.sencha.com/extjs/5.1.0/ex...app/index.html смотрели? Я как раз на нем научился программировать подобные задачки.

Рекомендую также посмотреть. В нем вы увидите как оформляются виды, чтобы в них потом не запутаться.

Я по этому примеру многое для себя взял. У меня реальный код по папочками разбит, каждый вид и его контролеры в своей папке. Просто подумал, если не буду эту гору папок в примере делать, то будет проще. Но похоже наоборот усложнил. :)

Пролетарий 21.06.2015 22:20

Цитата:

Сообщение от khusamov (Сообщение 375999)
Неверно.

Модель вида ОРДЕРЫ будет содержать хранилище Ордеров

Модель вида ОРДЕР будет содержать хранилище Заметок этого ордера.

Уже БОЛЬШАЯ разница между этими двумя моделями.

Далее, в модели ОРДЕР будет поле singleOrder, которого в модели ОРДЕРЫ не будет. Оно там совершенно не нужно.

Так что вам что-то другое рекомендовали.

Модель вида для вида ЗАМЕТКИ скорее будет пустая, так как она будет пользоваться родительской. Но пока создайте пустую, а там видно будет - нужно ее удалить или нет.

А, ну всё верно. Для таблице с заметками у меня своя модель определена в файле NoteModel.js, а для таблицы ордеров и для закладки конкретного ордера своя модель в файле OrderModel.js. Надо было для ордера больше полей оставить, а то он стал похож с заметками. Добавлю ещё поля в ордер, чтобы было видно, что это отдельная модель, сама по себе и не связана с моделью заметок. Ну и папочки отделить помогут.

Пролетарий 21.06.2015 22:29

Цитата:

Сообщение от khusamov (Сообщение 376008)
аналогично
сенча многое делает как-то странно, но в общем нормально получается...

кстати, предложение: если эта задача не кспеху, можно в среду-четверг ее быстро окучить по тимвиверу и скайпу
я просто сейчас работаю и не могу много уделять времени

Хорошее предложение, не откажусь. Меня можно сказать время не поджимает, просто дальше всё связано с аналогичными вещами и по сути двигаться не решив этого не куда. Но я тогда попробую рефакторинг кода провести, а то всё равно без этого кроме меня кому-то сложно понять, да и время потребуется. Но надеюсь к этому времени всё же проблема разрешиться. :)

khusamov 21.06.2015 22:43

ок
когда код в примере приведете к порядку - сообщайте тут

Пролетарий 22.06.2015 15:51

Рассортировал файлы по папочкам в примере, но возможно он и не понадобиться для текущих моих проблем. https://fiddle.sencha.com/#fiddle/p53

Т.к. возникли проблемы с загрузкой данных, автономной и вложенной в форму таблицы, то решил попробовать сделать пока добавление и удаление строк этой таблицы и у меня кажется возникло просветление, а может наоборот ещё сильнее в заблуждение погрузился. : )

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

Получается что даже если я смогу при load() отправлять ИД ордера, для которого надо получить заметки, то стор заметок будет обновляться и там будут данные только для одного текущего ордера, а если у меня их открыто несколько, то они будет иметь одни и те же заметки, т.к. стор содержит заметки только для одного ордера. И стор будет заменяться при каждом load(). А это не то что нужно.

Получается, что мне надо получить все заметки для всех ордеров, как происходит сейчас, но добавить к полям заметок ещё ИД их родителя, т.е. ордера, к которому относятся заметки. А уже в самой таблице, каким-то образом показывать заметки, только для ордера, который открыт в текущей закладке.

Для того что я хотел изначально, в ExtJS получается нужно создать отдельный стор с заметками для каждого ордера, т.е. если у меня 100 ордеров, то должно быть создано 100 уникальных сторов с заметками. Не знаю, насколько это правильно с точки зрения ExtJS.

Кстати, придумал как передать в таблицу заметок ИД ордера, т.е. добавил в bind переменную с ИД, во время создания таблицы.
{
        xtype: 'noteGrid',
        fieldLabel: 'Заметки:',
    
        bind: {
            data: {
                orderId: '{singleOrder.id}'
            }
        },
    }


Правда получение этой перемененной внутри таблицы получается каким-то уродским:
this.getView().bind.data.lastValue.orderId


Похоже теперь надо добавить ИД ордера в json с заметками и придумать как выводить в таблице только нужные заметки.


Часовой пояс GMT +3, время: 02:10.