Еще кое что нужно.
Прокси описывайте в моделях, а не в хранилищах. |
Цитата:
если да, то мы это в примере сделаем. |
пока все
жду когда внесете эти правки и можно будет дальше работать. |
Кстати, я совсем забыл. Вы этот пример http://dev.sencha.com/extjs/5.1.0/ex...app/index.html смотрели? Я как раз на нем научился программировать подобные задачки.
Рекомендую также посмотреть. В нем вы увидите как оформляются виды, чтобы в них потом не запутаться. |
Цитата:
Опять же когда два раза кликаю по строке таблице ордеров, то в форму просто передаю строку этой таблицы. Если создать модель для каждого вида, то они будут идентичны, с одними и теми же полями, поэтому сделал только одну модель, чтобы не дублировать код. Цитата:
|
Цитата:
Модель вида ОРДЕРЫ будет содержать хранилище Ордеров Модель вида ОРДЕР будет содержать хранилище Заметок этого ордера. Уже БОЛЬШАЯ разница между этими двумя моделями. Далее, в модели ОРДЕР будет поле singleOrder, которого в модели ОРДЕРЫ не будет. Оно там совершенно не нужно. Так что вам что-то другое рекомендовали. Модель вида для вида ЗАМЕТКИ скорее будет пустая, так как она будет пользоваться родительской. Но пока создайте пустую, а там видно будет - нужно ее удалить или нет. |
Цитата:
Классы нужно так именовать: ИмяПространства.путь.к.файлу.ИмяКласса Алиас хранилища: store.алиас-хранилища Имена файлов: ИмяКласса.js Папки строчными. Ну вроде пока все. |
Цитата:
Вообще я рефакторинг хотел на потом отложить, потому что чувствую, что придется всё по сто раз переделать, что уже не один раз делал. :( |
Цитата:
|
Цитата:
С алиасами. В примере будет сразу все работать, а вот в реальном проекте классы с хранилищами надо будет заранее подгружать. Потом расскажу как я это делаю. |
Цитата:
а так у меня аналогичные запарки были, спасибо обитателям этого форума - многие вопросы были решены |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
сенча многое делает как-то странно, но в общем нормально получается... кстати, предложение: если эта задача не кспеху, можно в среду-четверг ее быстро окучить по тимвиверу и скайпу я просто сейчас работаю и не могу много уделять времени |
Цитата:
|
Цитата:
|
Цитата:
|
ок
когда код в примере приведете к порядку - сообщайте тут |
Рассортировал файлы по папочкам в примере, но возможно он и не понадобиться для текущих моих проблем. 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 с заметками и придумать как выводить в таблице только нужные заметки. |
Цитата:
Нужно следовать следующему алгоритму: Когда делаем даблклик по ордеру должны создаваться: вкладка, форма, хранилище для заметок данного ордера. При создании в экстра-параметрах нужно указывать номер ордера, чтобы в хранилище попали именно его заметки. И все будет работать. Можно так открывать сколько угодно ордеров. |
Цитата:
|
Цитата:
|
Цитата:
this.getView().getViewModel().get("orderId") или так, если находимся в контроллере (или внутри вида) this.getViewModel().get("orderId") |
Цитата:
|
Цитата:
Ext.define('JournalApp.Application', { extend: 'Ext.app.Application', name: 'JournalApp', stores: [ // TODO: add global / shared stores here 'JournalApp.store.StrategyStore', 'JournalApp.store.NoteStore', 'JournalApp.store.OrderStore' ], launch: function () { // TODO - Launch the application } }); |
Цитата:
Наверное ИДу не место в вайве, но единственное что работает. |
Цитата:
Но потом их надо подключать по алиасам. |
Цитата:
|
Забивайте стрелку в тимвивере+скайпе на завтра. Мне было бы удобнее после 15:00 мск. Логин в скайпе khusamov
|
Цитата:
|
вы свои координаты не предоставили
так что пишите в скайп |
ладно, как будете готовы пишите...
|
Проблема решена.
Код в песочнице https://fiddle.sencha.com/#fiddle/pcf |
Спасибо огромное. :)
|
что там не слава богу - не стал читать весь топик. но в данном примере резанул вызов родителей в начале initComponent.
imho оно должно быть последним. попробуйте переставить 2-мя строчками ниже. ...и не тащите такой длинный топик. ктож читать будет всю историю. :-) Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 21:09. |