Я пытаюсь создать класс, который создает общий кендо TreeView, в котором в дереве могут быть элементы с флажком и элементы без флажка. Итак, я создал класс с текущим c'tor:
constructor(checkable: boolean = false) {
// Create the treeview options
const treeViewOptions: kendo.ui.TreeViewOptions = {
checkboxes: {
checkChildren: true,
template: "# if (item.level() > 0) { #" +
"<input type='checkbox' #= item.checked ? 'checked' : '' #>" +
"# } #"
},
// ... The rest of the treeViewOptions ...
}
Теперь все элементы, для которых их item.level == 0, не имеют флажка. Я хочу, чтобы, если параметр «checkable» в c'tor равен false, то все элементы в дереве не будут иметь флажков. Я не знал, как передать в шаблон параметр «checkable». Я хотел что-то вроде этого:
checkboxes: {
checkChildren: true,
template: "# if (checkable && item.level() > 0) { #" +
"<input type='checkbox' #= item.checked ? 'checked' : '' #>" +
"# } #"
},
Пожалуйста, помогите мне с этим, и если вы думаете, что есть более элегантный способ сделать это, я буду счастлив услышать. Спасибо
Вы можете сделать шаблон анонимной функцией и заставить его выдавать разные строки шаблона в зависимости от аргумента конструктора.
template: function () {
if (checkable) {
return ... template string that allows checkboxes at item level > 0 ...
} else {
return ... simpler template string that has no checkboxes anywhere ...
}
}
Спасибо! вот что я написал и сработало
template: (function () { if (checkableChildren) { return ' # if (item.level() > 0) { #' + "<input type='checkbox' #= item.checked ? 'checked' : '' #>" + '# } #'; } return ""; })()