Собственные реализации операции сохранения

Вы уже наверняка подумали, что сохранение изменений в памяти – это, конечно, замечательно, но как быть, если необходимо вернуть данные серверу? Оказывается, механизм ItemFileWriteStore предоставляет точку подключения расширения _saveCustom, которую можно использовать для вызова собственной процедуры всякий раз, когда вызывается метод save, то есть, помимо сохранения изменений в локальной копии и сброса признака «грязный» (dirty) у всех измененных элементов, можно также выполнять синхронизацию с сервером или выполнять еще чтонибудь. В вашем распоряжении остаются все те же функции интерфейса, которые вы использовали все время, но вообще, операция «полного сохранения», вероятно, могла бы включать в себя обход всего набора данных, сериализацию данных в некоторый формат – скорее всего, с помощью функции dojo.toJson – и передачу их на сервер. Согласно определению интерфейса Write, имеется возможность указать в именованных аргументах необязательные функции обратно го вызова onComplete и onError, которые будут вызываться в случае успеха или ошибки. Cуществует дополнительная возможность определить аргумент scope, задающий контекст выполнения для всех этих функций обратного вызова. Однако, эти аргументы передаются функции save, но они не передаются расширению _saveCustom.

В примере 9.15 демонстрируется, как можно реализовать обработчик _saveCustom, выполняющий передачу данных на сервер при вызове функции save().


Как видно из примера, все достаточно предсказуемо.

Пример 9.15. Собственный обработчик операции сохранения для механизма
ItemFileWriteStore


Fun with ItemFileWriteStore!
type="text/javascript"
src="http://o.aolcdn.com/dojo/1.1/dojo/dojo.xd.js">


(body)
(/body)


Оказывается, точка расширения _saveCustom используется не так часто, как можно было бы подумать, так как ее использование связано с передачей на сервер всего набора данных, что обычно не является необходимым, если работа не начинается с пустого набора данных, и нет нкужды выполнять начальную отправку всех данных. Чаще всего, особенно в случае очень больших наборов данных, предпочтительнее использовать интерфейс Notification, который будет представлен в следующем разделе, для передачи изменений небольшими порциями.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Dojo на эту тему:
ItemFileReadStore
ItemFileWriteStore
Анализ ItemFileReadStore
Запрос дочерних элементов
Иерархии и ссылки в формате JSON

Вернуться в раздел: Dojo / Абстракция данных