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 21:38

Еще кое что нужно.

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

khusamov 21.06.2015 21:39

Цитата:

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

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

khusamov 21.06.2015 21:40

пока все
жду когда внесете эти правки и можно будет дальше работать.

khusamov 21.06.2015 21:45

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

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

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

Цитата:

Сообщение от khusamov (Сообщение 375988)
1) У вас два вида: Таблица Ордеров и Просмотр Ордера

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

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

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

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

Если создать модель для каждого вида, то они будут идентичны, с одними и теми же полями, поэтому сделал только одну модель, чтобы не дублировать код.

Цитата:

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

С именование у меня проблемы. :) Всё не как не мог понять принятые в ExtJS правила. Когда большими буквами, когда маленькими, какие суффиксы и прочие использовать в названиях. Спасибо за разъяснение, буду упорядочивать.

khusamov 21.06.2015 21:58

Цитата:

Если создать модель для каждого вида, то они будут идентичны, с одними и теми же полями, поэтому сделал только одну модель, чтобы не дублировать код.
Неверно.

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

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

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

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

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

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

khusamov 21.06.2015 22:00

Цитата:

С именование у меня проблемы. Всё не как не мог понять принятые в ExtJS правила. Когда большими буквами, когда маленькими, какие суффиксы и прочие использовать в названиях. Спасибо за разъяснение, буду упорядочивать.
Алиасы только строчными буквами.

Классы нужно так именовать:
ИмяПространства.путь.к.файлу.ИмяКласса


Алиас хранилища: store.алиас-хранилища

Имена файлов: ИмяКласса.js

Папки строчными.

Ну вроде пока все.

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

Цитата:

Сообщение от khusamov (Сообщение 375990)
Дальше, у вас один store определен. А их ведь два должно!

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

Notes.js
Orders.js

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

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

Это отражения моего пути освоения ExtJS. :) Во всех примерах сторы записывают сразу в viewModel, а не в отдельном файле. Я стор для ордера сделал внутри viewModel, но затем где-то увидел, что можно все же определить стор в отдельном файле и через параметр source: 'путьКФайлуСтор'. Вот поэтому у меня один стор в файле, а другой сразу в viewModel.

Вообще я рефакторинг хотел на потом отложить, потому что чувствую, что придется всё по сто раз переделать, что уже не один раз делал. :(

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

Цитата:

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

Тут я сильно сомневаюсь, у меня любое изменение приводит к очередным ошибкам, которые отнимают часы или дни. :) Я Golang освоил с пол пинка и проблем нет с устранением ошибок, а тут кошмар какой-то.

khusamov 21.06.2015 22:04

Цитата:

можно все же определить стор в отдельном файле и через параметр source: 'путьКФайлуСтор'.
Хранилища в отдельных файлах.
С алиасами.

В примере будет сразу все работать, а вот в реальном проекте классы с хранилищами надо будет заранее подгружать. Потом расскажу как я это делаю.


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