|
|
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
Сабж. Store может иметь некоторое состояние - отфильтрован или нет и т. п. Предположим, нужно вывести select для списка стран на нескольких вкладках, данные в который подгружаются с помощью JsonStore и соответвующих readerов. Список стран во всех вкладках будет одинаковым, но, например, в зависимости от выбора в другом selectе нужно будет отфильтровать в первой вкладке по другому, нежели во второй. Следовательно создать один store и использовать его во всех вкладках не получится. Создавать полностью отдельные store для каждой вкладки тоже не хочется - если откроется 5 вкладок, то информация по странам будет запрошена аяксом 5 раз вместо 1. Есть ли в ExtJS хранилище кэшированных данных, которое можно передать store'у? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 10:54:48 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
Имеются в виду вкладки браузера (т.е. отдельные окна с точки зрения JS)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 11:04:50 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
Яростный Меч, нет, вкладки ExtJSа. P. S. Способ с сохранением в переменную результатов AJAXа и подсовывания SimpleStore'у не рассматриваем. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 11:27:48 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
Яростный МечИмеются в виду вкладки браузера (т.е. отдельные окна с точки зрения JS)? Если очень грубо - имеем два JsonStore с одинаковым url. Надо подгрузить оба. Как это сделать за один запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 11:38:44 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
an0nymЕсли очень грубо - имеем два JsonStore с одинаковым url. Надо подгрузить оба. Как это сделать за один запрос?Т.е. вопрос в том, можно ли загрузить один JsonStore, а потом сделать копию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 11:50:49 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
Яростный Меч, копия не подойдет, она скопирует состояние первого JsonStore. Нужна возможность создать новый JsonStore на основе тех же данных, на основе которых был создан первый JsonStore. Желательно, чтобы не пришлось во второй копировать данные из первого - тогда придется сообщать второму о первом, третьему о первом, что излишне. Или держать "прототип" - Store с общими данными в начальном состоянии. Нужно что-то вроде объекта-сигнлтона (с lazy инициализацией), инкапсулирующего данные, который можно передать множеству store'ов. Вот этот самый объект-синглтон я знаю, как реализовать на чистом аяксе, сохранить просто возвращенный Json в переменную и все создаваемые store'ы сделать SimpleStore'ами и передавать им эту переменную. Но может в ExtJS есть уже нечто готовое на этот счет? Не очень понимаю, что конкретно делают reader и proxy - есть подозрение, что proxy - оно и есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 11:58:13 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
Готового там нет, store связывается с отображением данных и начинает хранить там состояние отображения. Можешь написать обертку чтобы использовать один источник данных, но при этом иметь изолированные хранилища состояний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 13:48:30 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
зы, т. е. proxy и reader - это не это? reader инкапсулирует запрос данным, а proxy только их (если необходимо) трансформацию, но никто из них данные в себе as is не хранит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 13:57:05 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
an0nymт. е. proxy и reader - это не это? reader инкапсулирует запрос данным, а proxy только их (если необходимо) трансформацию, но никто из них данные в себе as is не хранит? Я точно в деталях не знаю, потому что сам руками не трогал, просто девелоперы сталкивались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 14:49:40 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
зы, т. е. proxy и reader - это не это? reader инкапсулирует запрос данным, а proxy только их (если необходимо) трансформацию, но никто из них данные в себе as is не хранит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 17:01:15 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
Сорри, даблпост. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 17:01:32 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
an0nym, У Store есть функции filter и filterBy. Берите и фильтруйте свой JsonStore при переходе на другую вкладку. Вообще смотрите исходники ext на предмет подходящих вам функций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 17:43:18 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
yelena, тогда надо сохранять их текущее состояние где-то, чтобы бы при переходе обратно, его восстановить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 18:05:44 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
yelena, и вообще jsonData можно AJAX'сом запросить один раз и создать несколько JsonStore для разных вкладок и по факту загрузки jsonData сделать store.loadData(json, append); для каждого JsonStore ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 18:07:05 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
могу помочь, если интересно, профессионально занимаюсь экстжс уже два года ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2010, 18:44:13 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
an0nym, У Store есть функции filter и filterBy. Почему вы не хотите взять и отфильтровать свой JsonStore при переходе на другую вкладку? А значения можно хранить в сессиях, если нет PHP тогда можно хранить в куках с помощью JS (JavaScript) записывать с помощью document.cookie();. Поищите примеры в интернете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2010, 20:36:08 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
Master4, напишите пример сохранения и восстановления множества состояний ОДНОГО Store после многократного применения filter[By]. А мы почитаем, посмеемся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2010, 21:24:35 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
an0nym, опять ждешь у моря погоды? :) Я же говорю, пиши и дописывай. ExtJS это набор для RAD, чуть в сторону - и надо дописывать свое. Мне он нравится исключительно из-за отточеных кроссбраузерных дизайн элементов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2010, 21:47:42 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
yelenayelena, и вообще jsonData можно AJAX'сом запросить один раз и создать несколько JsonStore для разных вкладок и по факту загрузки jsonData сделать store.loadData(json, append); для каждого JsonStore зы, у меня еще до вопроса на этом форуме был вариант, как предложила yelena в процитированном посте. От лени искал готового и/или более красивого решения. 10 февраля, после ваших ответов, так и реализовал - сделал синглтон, запрашивающий по аяксу данные с сервера, и отэкстендился от JsonStore для автоматической подвязки этого синглтона в виде загрузчика. Теперь большинство справочников так гружу. Кстати, в прошлой и в этой теме забыл сказать - спасибо! :) И вам и yelena'е. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2010, 21:51:12 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
зы, с лоадером, кстати, была примерно такая же ситуация. Просто дольше искал красивого решения. После очередного уикэнда реализовал возможность как синхронной, так и асинхронной подгрузки. Асинхронную использую везде, где некритично усложнить код, с синхронной пока мирюсь моментах, где не хочется вводить новый скоуп. Есть мысли, как устранить синхронные запросы в будущем (причем код в части использования лоадера никак менять не придется), но пока есть более насущные проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2010, 21:54:12 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
Нужно сделать запрос через Ext.Ajax.request получить ответ от сервера, распраить его как json после этого можно писать store1.loadData(items) store2.loadData(items.map(function(x){return x.kind == 'big' })) То, что у store есть встроенная поддержка загрузки данных по аяксу совсем не означает, что её нужно воспользоваться - store умеет грузить данные из json и из любого объекта, типа data = [{id:1,name:'A',kind:'small'}] - загрузит вот одну строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2010, 11:22:58 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
Изменения элементов одного хранилища отражаются автоматически в другом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2010, 12:29:38 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
зы, всмысле? Если хранилище самих данных обновляется, то все на него завязанные store'ы получают сообщение и подгружают данные из хранилища, если вы об этом. Сложнее логику не вижу смысла реализовывать, пока это нужно только для справочников - а там ни сохранение, ни сортировка на стороне сервера, ни нечто другое пока не требуется. Только оптимизировать, чтобы один справочник сто раз не грузился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2010, 12:38:45 |
|
||
|
ExtJS - хранилище, которое можно передать многим store?
|
|||
|---|---|---|---|
|
#18+
ZeusTheTrueGod, сейчас так и делается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2010, 12:40:37 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=36461361&tid=1453543]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
207ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 559ms |

| 0 / 0 |
