Я старался создать шаблон пользовательского фильтра для сетки Kendo, когда сетка находится в filterMode: "row"
. Я могу заставить HTML появиться, но угловая директива никогда не компилируется.
Это конфигурация фильтра для столбца:
filterable: {
cell: {
template: function getTemplate(args) {
var container = $("<span>").appendTo(args.element.parent());
var buttonTemplate = kendoGridService.compileTemplate({
template: "modules/common/templates/kendo/columns/days-of-week-edit.tpl.html",
data: options
});
container.append(buttonTemplate);
},
showOperators: false
}
}
Вот упомянутая выше функция шаблона компиляции:
compileTemplate: function compileTemplate(options) {
var template = $templateCache.get(options.template);
var templateFn = kendo.template(template);
var result = templateFn(options.data);
return result;
}
Вот что я вижу в HTML:
<span class="k-operator-hidden">
<input data-bind="value: value">
<span>
<days-of-week-edit data-item="dataItem"></days-of-week-edit>
</span>
</span>
И, наконец, это то, что я вижу в пользовательском интерфейсе. Не то, что поле ввода по умолчанию есть, но ничего больше не отображается.
Похоже, вы также должны скомпилировать свой шаблон с помощью Angular. Попробуйте использовать $compile
service:
var template = $templateCache.get(options.template);
var templateFn = kendo.template(template);
var result = templateFn(options.data);
$compile(result)($scope);
return result;
Просто убедитесь, что у вас есть действительный объект $scope
с свойством dataItem
внутри