Библиотека Webix предлагает несколько способов изменять уже инициализированный лейаут:
Далее мы рассмотрим каждый из способов более детально.
Вы можете добавлять и удалять компоненты динамически, уже после того, как лейаут был инициализирован. Такой способ применим к:
Добавление и удаление компонентов реализуется с помощью методов addView() и removeView().
Чтобы добавить новый компонент (ряд и колонку лейаута, ячейку multiview, панель accordion, контрол тулбару или форме) задайте объект компонента и позицию, куда его добавить.
Добавляем кнопку в тулбар
var id = $$("toolbar").addView({
view:"button", value:"new button",
}, index);
Index определяет позицию среди других дочерних элементов компонента, куда добавлять новый компонент или контрол. Это может быть:
Индекс любого компонента можно получить с методом index, вызвав его у Webix компонента ((лейаута, multiview, accordion, карусели, форма, тулбара).
Добавляем компонент
webix.ui({
id:"layout1",
rows:[
{view:"text", id:"text1"},
{view:"button", value:"Add View", click:addView}
]
});
var pos = $$("layout1").index($$("text1"));
$$("layout1").addView({view:"text", id:"text2"}, pos);
Вы можете изменить размеры нового при добавлении компонента, соблюдая общие правила или позже - через инструменты для переопределения свойств.
Метод removeView() вызывается у родительского компонента и удаляет дочерние элементы. Метод принимает объект дочернего компонента или его ID в качестве параметра.
Убираем кнопку с тулбара
$$("toolbar").removeView(id);
В этой секции описаны продвинутые возможности метода webix.ui(). Помимо своей основной цели, создания Webix компонента, этот метод может быть использован для изменения лейаута. Для этого необходимы дополнительные параметры:
Поэтому конструктор webix.ui() можно использовать для следующих целей:
webix.ui({
view:"form", id:"myform", elements:[...]
});
// перерисовка формы с новыми элементами
webix.ui([// ...new elements], $$("myform"));
Related sample: Dynamic Layout Rebuilding: Replace Part of the UI
webix.ui({
id:"mylayout",
rows:[
{view:"toolbar", ...},
{view:"datatable", id:"mydatatable" ...},
]
});
// замещаем datatable
webix.ui({//...new config}, $$("mylayout"), $$("mydatatable"));
В примере выше мы переопределили компонент "mydatatable" новым объектом конфигурации. Компонент "mylayout" стал родительским элементом для этого объекта. При отрисовке нового компонента, объект конфигурации займёт контейнер компонента "mydatatable".
Вы также можете передать 2 аргумента, опуская родительский контейнер. Результат останется тем же.
Related sample: Dynamic Layout Rebuilding: Replace Part of the UI
Чтобы загрузить новый объект конфигурации с сервера, используйте следующий способ:
webix.ajax("config.json", function(text){
webix.ui(webix.DataDriver.json.toObject(text), $$("mylayout"), $$("mydatatable"));
});
config.json содержит новую конфигурацию.
Наверх