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 20:48

Цитата:

Вот определение стора в ViewModel:
ну да, в этом случае нужно столько раз определять store, сколько нужно. А вот класс для store нужен один.

Цитата:

Т.е. надо их так дублировать специально?
ну да, определение класса один раз, а вот на местах создавать через алиас: { type: "алиас" }

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

Цитата:

Сообщение от khusamov (Сообщение 375974)
А что вообще должно получиться?
Я вижу пока грид с ордерами:
Для чего нужна эта вкладка с таблицей ордеров?

Для чего нужен аккордион слева?

В общем нужно описание ФУНКЦИОНАЛЬНОСТИ вашего примера.

А ну да, забыл описать что надо делать. :)

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

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

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

khusamov 21.06.2015 21:04

У вас два файла: orders.json и notes.json
я так понимаю notes это подчиненная таблица, но тогда где в ней внешний ключ? например orderId

khusamov 21.06.2015 21:07

Цитата:

Аккордеон это хвосты, которые остались и я не смог его выпилить из примера, ошибки всякие начинают как всегда лезти, поэтому оставил как есть. Не обращайте на него внимание. Тут самое главное открытие формы редактирования ордера.
в файле Main.js я удалил строки 14-32 и все работает. Зато нет лишнего кода.

Пролетарий 21.06.2015 21:28

Цитата:

Сообщение от khusamov (Сообщение 375984)
У вас два файла: orders.json и notes.json
я так понимаю notes это подчиненная таблица, но тогда где в ней внешний ключ? например orderId

Внешний ключ типа на сервере, а это результат. Внешний ключ будет в урде находиться. Т.е. при загрузке формы, таблица заметок отправляет запрос на сервер с ИД в урле и получает файл notes.json. Я так понимаю ИД внутри самих данных не нужен, т.к. данные всегда будет только для одного ордера, никогда не должно, чтобы при запросе таблицы ордера 1, возвращались заметки ордера 2 или 3.

В примере по сути это не важно. Нужно чтобы таблица заметок загрузилась данными из notes.json, пусть пока будет одно и то же. Ну и как-то получить ИД формы, владеющей этой таблицей.

orders.json и notes.json получаются с сервера независимо и не знают друг о друге, их связывает только то что один из ИД из orders.json, после загрузке в браузер должен быть известен перед отправкой запроса о получении notes.json.

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

Пролетарий 21.06.2015 21:30

Цитата:

Сообщение от khusamov (Сообщение 375985)
в файле Main.js я удалил строки 14-32 и все работает. Зато нет лишнего кода.

Спасибо, то же сделал с примером. Наверное или лишнее цеплял при удалении или наоборот оставлял. Торопился пример сделать.

khusamov 21.06.2015 21:33

1) У вас два вида: Таблица Ордеров и Просмотр Ордера

И для обоих видов вы используете одну и ту же модель вида: order

А по правильному нужно на каждый вид свою модель сделать.

2) Именования нужно привести в порядок. Я уже запарился открывать файлы - каждый раз приходится думать какой файл что хранит в себе.

Например для вида нужно три файла:

Вид.js
ВидModel.js
ВидController.js

где Вид это имя вида

Далее, алиас должен соответствовать имени класса. Например у вас:

есть xtype: 'orderGroup' ему соответствует класс Fiddle.view.OrderGrid

в итоге, я смотрю на orderGroup и ищу аналогичный класс, например Fiddle.view.OrderGroup. Экономьте время на подобные поиски.

Итого примерно вот что должно получиться:

view
 - order
     - Order.js
     - OrderModel.js
     - OrderController.js
 - orders
     - Orders.js
     - OrdersModel.js
     - OrdersController.js
 - notes
     - Notes.js
     - NotesModel.js
     - NotesController.js


Итого три вида. Причем notes это вложенный в order вид.

khusamov 21.06.2015 21:35

Дальше, у вас один store определен. А их ведь два должно!

Сделайте два класса хранилища

Notes.js
Orders.js

и для каждого алиасы notes n orders соответственно

И после этого, в моделях видов можно прописывать {type:"алиас хранилища"}

Пролетарий 21.06.2015 21:36

Можно конечно, насколько я понимаю сделать что-то вроде один ко многим и гонять заметки вместе с ордером, но у меня подобного таблице заметок будет ещё 3 штуки.

Получается ордер создается и заполняется. На этом всё. Больше он мало вероятно будет редактироваться, а вот заметки и ещё 3 подобные таблицы будут добавляться и редактироваться. Они будет состоять из 1-2 полей, а сам ордер из 20. Поэтому хочу сделать независимое обращение к сервера ордера и вложенных в него таблиц.

khusamov 21.06.2015 21:36

Когда вы это сделаете - вы значительно упростите свой код
станет проще в нем что либо искать при анализе
возможно ошибки все исчезнут сами собой - такое тоже иногда бывает


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