Использование ViewModel для грида
Добрый день.
Есть грид в котором выводятся записи из стора "ListViewStore". В "ListViewStore" в поле "contragent" хранится id значения. Так же есть второй стор "ContrAgents" в котором хранятся эти id и другие соответствующие значения. Для грида указываю в bind стор ListViewStore и соответственно в поле My Contragent выводится id . Мне нужно выводить name контрагента. Если я правильно понимаю, то с версией extjs >=5, я могу во ViewModel в конфиге formulas установить событие при загрузке грида, в нем получать id поля "My Contragent" и потом получать и возвращать "name" из стора "ContrAgents". Так ли это? Приведите пож-та пример как это можно реализовать. Создал пример в fiddle |
То есть для отображения грида вам необходимо несколько сторов? Серьезно? В таком случае данные скорее всего придется выковыривать на этапе рендера ячейки (никакие ассоциативные связи тут не помогут и формулы тоже) - что приведет к катастрофической потере производительности.
PS: Да, во ViewModel действительно можно подписываться на события в store, но это не решает вашу проблему описанную мной выше. |
Думаю что не так все глобально.
У меня грид использует один стор, но в этом сторе хранится поле не с неймом, а значением id. Name по этому id хранится в другом сторе. Как мне в гриде выводить Name? |
Пожалуйста, Fiddle . Но обычно данные для грида хранят в одном store (и даже не делают отношения между моделями) для ускорения его работы, особенно если грид сложен (например, locked grid с десятком колонок (template column, action columns и прочее), да ещё и с группировками)
|
Цитата:
|
да вы делайте так как вам надо.. исходя из вашего проекта/целей.
если данные готовить на сервере, как товарищ выше написал, да код клиента упростится немного (не будет второго стора и рендерера на колонке). но и минусы у такого подхода тоже есть ..например при изменении стора контрагентов на клиенте вы не сможете на лету обновить грид без запроса к серверу. то есть приложение потеряет в динамике. а насколько это критично в вашем случае смотрите сами. далее, от извлечения поля из другого стора при обращение к записи по индексу вы не увидите "катастрофическую потерю производительности" как выше написано. :no: выборка по индексу - быстрая операция. да и по дефолту грид использует buffered renderer, то есть отрисовывает только видимые записи (+буфер). использование нескольких нормализованных сторов - нормальная практика в ext js. |
Часовой пояс GMT +3, время: 10:44. |