Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.11.2018, 12:47
Аспирант
Отправить личное сообщение для Ambassador Посмотреть профиль Найти все сообщения от Ambassador
 
Регистрация: 12.11.2015
Сообщений: 39

Использование ViewModel для грида
Добрый день.
Есть грид в котором выводятся записи из стора "ListViewStore". В "ListViewStore" в поле "contragent" хранится id значения.
Так же есть второй стор "ContrAgents" в котором хранятся эти id и другие соответствующие значения.
Для грида указываю в bind стор ListViewStore и соответственно в поле My Contragent выводится id . Мне нужно выводить name контрагента.
Если я правильно понимаю, то с версией extjs >=5, я могу во ViewModel в конфиге formulas установить событие при загрузке грида, в нем получать id поля "My Contragent" и потом получать и возвращать "name" из стора "ContrAgents". Так ли это?
Приведите пож-та пример как это можно реализовать.
Создал пример в fiddle
Ответить с цитированием
  #2 (permalink)  
Старый 06.11.2018, 16:06
Интересующийся
Отправить личное сообщение для Swat2k Посмотреть профиль Найти все сообщения от Swat2k
 
Регистрация: 15.08.2017
Сообщений: 14

То есть для отображения грида вам необходимо несколько сторов? Серьезно? В таком случае данные скорее всего придется выковыривать на этапе рендера ячейки (никакие ассоциативные связи тут не помогут и формулы тоже) - что приведет к катастрофической потере производительности.

PS: Да, во ViewModel действительно можно подписываться на события в store, но это не решает вашу проблему описанную мной выше.
Ответить с цитированием
  #3 (permalink)  
Старый 06.11.2018, 16:42
Аспирант
Отправить личное сообщение для Ambassador Посмотреть профиль Найти все сообщения от Ambassador
 
Регистрация: 12.11.2015
Сообщений: 39

Думаю что не так все глобально.
У меня грид использует один стор, но в этом сторе хранится поле не с неймом, а значением id. Name по этому id хранится в другом сторе.
Как мне в гриде выводить Name?
Ответить с цитированием
  #4 (permalink)  
Старый 06.11.2018, 17:51
Интересующийся
Отправить личное сообщение для Swat2k Посмотреть профиль Найти все сообщения от Swat2k
 
Регистрация: 15.08.2017
Сообщений: 14

Пожалуйста, Fiddle . Но обычно данные для грида хранят в одном store (и даже не делают отношения между моделями) для ускорения его работы, особенно если грид сложен (например, locked grid с десятком колонок (template column, action columns и прочее), да ещё и с группировками)

Последний раз редактировалось Swat2k, 06.11.2018 в 17:54.
Ответить с цитированием
  #5 (permalink)  
Старый 07.11.2018, 08:24
Аспирант
Отправить личное сообщение для Ambassador Посмотреть профиль Найти все сообщения от Ambassador
 
Регистрация: 12.11.2015
Сообщений: 39

Сообщение от Swat2k Посмотреть сообщение
Пожалуйста, Fiddle . Но обычно данные для грида хранят в одном store (и даже не делают отношения между моделями) для ускорения его работы, особенно если грид сложен (например, locked grid с десятком колонок (template column, action columns и прочее), да ещё и с группировками)
Т.е лучше всего подготавливать необходимую структуру данных на стороне бекенда? И в идеале один грид - это один стор со всеми необходимыми значениями полей?
Ответить с цитированием
  #6 (permalink)  
Старый 07.11.2018, 09:12
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 204

да вы делайте так как вам надо.. исходя из вашего проекта/целей.

если данные готовить на сервере, как товарищ выше написал, да код клиента упростится немного (не будет второго стора и рендерера на колонке).

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

далее, от извлечения поля из другого стора при обращение к записи по индексу вы не увидите "катастрофическую потерю производительности" как выше написано.
выборка по индексу - быстрая операция. да и по дефолту грид использует buffered renderer, то есть отрисовывает только видимые записи (+буфер).

использование нескольких нормализованных сторов - нормальная практика в ext js.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SEOCRM - бесплатные инструменты для оптимизаторов, интернет-маркетологов и владельце SeoCRM Оффтопик 0 23.05.2016 12:59
Требуется программист на QML для создания интерфейса клиентской программы для общения m.simakov Работа 0 11.02.2016 18:07
Использование window.open() для позиционирования окна в середине экрана marat-chessman Events/DOM/Window 13 14.08.2011 20:20
Возможно ли использование "горячих" клавиш для навигации по таблице? sergeos jQuery 9 16.07.2010 13:43