Есть ли простой способ определить функцию обработчика событий «выбрать» в HTML-атрибутах mvvm для поля автозаполнения кендо?
Например, вот рабочая версия поля автозаполнения с использованием настройки jquery:
$("#fieldProjectName").kendoAutoComplete({
minLength: 4,
filter: "contains",
dataTextField: "ProjectName",
placeholder: "Begin typing the Project Name",
select: function (e) { selectAutoComplete(this.dataItem(e.item.index()), "ProjectItemKey", "ProjectName") },
dataSource: dataProjectList,
});
На данный момент это эквивалентная версия определения аналогичного поля в шаблоне с использованием html-атрибутов mvvm «data-???»
<input name="ProjectItemKey"
data-bind="value:ProjectName"
data-value-primitive="true"
data-value-field="ProjectItemKey"
data-text-field="ProjectName"
data-source="dataProjectList"
data-role="autocomplete"
data-min-length="4"
data-filter="contains"
data-placeholder="Begin typing the Project Name"
/>
Что мы не знаем, как сделать, так это определить обработчик события для события select в этой структуре html-атрибута mvvm, которая эквивалентна свойству «select:» в первом примере:
select: function (e) { selectAutoComplete(this.dataItem(e.item.index()), "ProjectItemKey", "ProjectName") },
Например, если было что-то вроде:
data-select: "onSelectProject"
тогда мы могли бы включить эту функцию в шаблон для обработки события «выбрать»:
function onSelectProject(e) {
selectAutoComplete(this.dataItem(e.item.index()), "ProjectItemKey", "ProjectName");
}
К сожалению, мы не знаем, как это сделать. Единственная документация, связанная с этим, которую мы видели, включает в себя настройку пользовательской модели kendo.observable с собственным методом, встроенным в модель, а затем настройку чего-либо в событиях привязки данных. Однако это кажется очень сложным и непрямым подходом. Кроме того, мы понятия не имеем, как мы можем манипулировать моделью, поскольку она исходит из kendoGrid, который затем использует пользовательский шаблон редактирования записи, который включает это поле автозаполнения.
Мы потратили много часов, пытаясь отследить это, поэтому любая помощь будет принята с благодарностью.