У библиотеки Webix есть собственное API для работы с хранилищами данных на клиенте (LocalStorage, SessionStorage, Cookies).
Модуль webix.storage включает в себя следующие объекты:
У каждого из этих объектов есть следующие методы:
У модуля storage.cookie есть еще один метод:
Стоит учитывать, что метод возвращает необработанную строку. Если нужно получить JSON объект, используйте метод get method.
Local Storage позволяет хранить любую информацию приложения, в том числе и текущее состояние компонента, полученное методом getState().
С помощью метода put() вы можете сохранить состояние (а точнее JSON объект, возвращенный методом getState() компонента) в Local Storage под любым именем.
function save_state(){
webix.storage.local.put("state", grid.getState());
}
Если данные находятся в обычном JavaScript объекте, то перед сохранением в Local Storage их нужно перевести в JSON формат. Сделать это можно при помощи метода serialize().
С помощью метода get() вы можете извлечь данные из Local Storage. Метод принимает имя, под которым хранится JSON объект с данными.
function restore_state(){
var state = webix.storage.local.get("state");
if (state)
grid.setState(state);
}
Related sample: DataTable State Object:Session
Помимо готовых решений библиотеки Webix для сохранения данных, вы можете создать собственный прокси объект для работы приложения в offline режиме. Для этого нужно определить объект, как значение свойства url компонента:
webix.ui({
view:"datatable",
//другие настройки
url:{
$proxy: true,
load: function(view) { //сохраняет данные после редактирования
view.attachEvent("onAfterEditStop", function(){
webix.storage.local.put("app_data", this.serialize());
});
view.load("data/data.json", {
success: function(text){ //обновляет данные в хранилище
webix.storage.local.put("app_data", text)
},
error: function(){ //срабатывает в режиме offline
view.parse(webix.storage.local.get("app_data"));
}
});
}
}
});
У модуля webix.storage есть специальный метод prefix(), который позволяет сохранять данные под уникальным именем. Метод добавляет специальный префикс к каждому названию, под которым сохраняются данные.
Метод принимает два параметра:
mystore = webix.storage.prefix("app_id", webix.storage.local);
//сохраняем данные в Local Storage под именем "app_id_session_key"
mystore.put("session_key", 12)
mystore.get("session_key") //извлекаем данные из Local Storage
// -> 12
Наверх