Search code examples
parametersaureliakendo-multiselect

Aurelia - how send object or parameter to viewmodel?


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?


Solution

  • 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!