Как можно отобразить вычисляемые поля на форме?
Пробую Code Snippet
но в template приходит пустой объект
спасибо, я видел это решение, но оно не подходит
эти данные используются в нескольких местах одновременно
Можно ли хотя бы получить доступ к полному объекту из Template.setValues()
setValue: function (value) { this.setValues(value); },
единственное, что я нашел - это такой хак:
setValue: function (value, view) {
var row = view._parent_cell._values;
this.setValues( row );
},
но это верно только в debug webix, minifier дает им другие имена
view._parent_cell._values
в случае с формой и её elements можно заменить на
view.getFormView().getValues()
Но, возможно, вам нужно изолировать template от формы и устанавливать ему значения, когда в форме происходят изменения? Как в этом примере: https://webix.com/snippet/53f80e7b
Helga, спасибо за ответ,
view._parent_cell._values
в случае с формой и её elements можно заменить на
view.getFormView().getValues()
К сожалению, не помогло:
https://webix.com/snippet/5fd50454
в консоли видно, что в template приходит {}
а setValues даже не вызывается (
По-хорошему, у элемента формы должен быть задан параметр name, чтобы форма попыталась передать туда одноименное значение из объекта values: https://webix.com/snippet/066e25ac
Но, чтобы значения всей формы были доступны у этого элемента, он должен обрабатываться последним (а цикл for …in не всегда последователен), потому что форма пересобирает свои элементы, и в values записывается то, что отдает каждый элемент в своем методе getValue().
Поэтому более стабильным решением было бы использовать пример из моего предыдущего сообщения.
Спасибо!
Чтобы закрыть тему, и у коллег было еще одно рабочее решение
можно сделать так:
- при загрузке формы присвоить self ссылку: vals.$this = vals;
- привязывать template к “$this”
Рабочий пример:
https://webix.com/snippet/91980f9f