Aurelia - 如何将对象或参数发送到viewmodel?

时间:2017-07-07 08:51:01

标签: parameters aurelia 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>
ts文件中的

我对SetGroupFilter有以下描述:

SetGroupFilter(select)
    {
        var multiselect = select.data("kendoMultiSelect");
        var selectedItems = multiselect.dataItems();

        var filters = this.buildFilters(selectedItems , "GroupId");
        this.merchantDataSource.filter(filters);
    }

在我拥有以下SetGroupFilter函数之前:

export class TransactionComponent {
        SetGroupFilter()
            {
                var multiselect = $("#selectCorporateGroup").data("kendoMultiSelect");
                var dataItem = multiselect.dataItems();

                var filters = this.buildFilters(dataItem, "GroupId");
                this.merchantDataSource.filter(filters);
            }
    }

但是现在我有一个任务来划分模型&amp;视图模型。所以我不能在ts文件中使用id作为我的multiselect。

但是我如何向viewmodel发送必要的信息?我想把我的多选作为对象。

如果我使用 k-on-change.delegate =“SetGroupFilter($ this)”,我会得到select = TransactionComponent

如果我使用 k-on-change.delegate =“SetGroupFilter(this)”,我会得到select = undefined

我如何修理它?

1 个答案:

答案 0 :(得分:0)

我已经找到了决定!

我使用了以下表达式:

k-on-change.delegate="SetGroupFilter($event)"

在viewmodel中:

var multiselect = select.detail.sender;

var dataItem = select.detail.sender.dataItems(); 

一切正常!