I use Kendo multiselect:
<ak-multiselect k-data-text-field="name"
k-data-value-field="id"
id="selectCorporateGroup"
k-data-source.bind="corporateGroupDataSource"
k-on-change.delegate="SetGroupFilter(???)"
data-placeholder="Select corporate group...">
</ak-multiselect>
in ts-file I have the following description for SetGroupFilter:
SetGroupFilter(select)
{
var multiselect = select.data("kendoMultiSelect");
var selectedItems = multiselect.dataItems();
var filters = this.buildFilters(selectedItems , "GroupId");
this.merchantDataSource.filter(filters);
}
Before I had the following SetGroupFilter function:
export class TransactionComponent {
SetGroupFilter()
{
var multiselect = $("#selectCorporateGroup").data("kendoMultiSelect");
var dataItem = multiselect.dataItems();
var filters = this.buildFilters(dataItem, "GroupId");
this.merchantDataSource.filter(filters);
}
}
But now I have a task to divide model & viewmodel. So I can't use id for my multiselect in ts-file.
But how I can send the necessary information to viewmodel? I want to sent my multiselect as object.
If I use k-on-change.delegate="SetGroupFilter($this)", I get select = TransactionComponent
If I use k-on-change.delegate="SetGroupFilter(this)" I get select = undefined
How I can fixed it?
I have found the decision!
I have used the following expression:
k-on-change.delegate="SetGroupFilter($event)"
And in viewmodel:
var multiselect = select.detail.sender;
var dataItem = select.detail.sender.dataItems();
It works fine!