rows_setter / cols_setter из "baselayout"

При использовании “rows_setter” или “cols_setter” в методе “_define” (стр.2549 webix UI v.5.4.0 GPL), в “_settings[property]” будет записано значение “true” вместо реального значения. Является ли такое поведение правильным?

эти методы не предназначены для прямого использования.
возвращая true удаляется соответсвующее значение (заменяется на true) в config.

Спасибо!

Для прямого использования:

Чтобы заменить child элементы, не изменяя их расположения (rows на rows, cols на cols), используйте webix.ui:

webix.ui([ ..array of rows/cols..], $$("mylayout"));

Заменить child элементы, задав любое расположение (cols или rows)

$$("mylayout").define("rows", [array]);
$$("mylayout").reconstruct();

https://docs.webix.com/desktop__dynamic_layout.html

Если речь идет о создании кастомного компонента с child элементами по умолчанию, то добавляйте их напрямую в config:

webix.protoUI({
   name:"myview", 
   $init:function(config){
       config.cols = [ ... ];
   }
}, webix.ui.layout);

Спасибо! Но вопрос скорее в правильности работы “_define” метода.
_define:function(property,value){ //method with name {prop}_setter will be used as property setter //setter is optional var setter = this[property+"_setter"]; return (this._settings[property]=setter?setter.call(this,value,property):value); },
В this._settings[property] будет записано true вместо значения.

Да, это нормально. Конфигурация дочерних элементов преобразовывается, и layout не хранит ее копию. А config.rows:true на выходе дает определить, какой тип layout-a используется - горизонтальный или вертикальный.