Kendo multiselect,在删除项目时触发事件

Ant*_*anK 3 events multi-select kendo-ui

我使用了Kendo UI中的multiselect.当用户从多选中删除项目时,我想知道是否有任何方法可以触发函数.到目前为止,我知道"更改"事件已被触发,但它过于通用,我无法找到有关用户删除内容的任何信息.还是有吗?

Ona*_*Bai 5

如何定义change为:

change    : function (e) {
    var previous = this._savedOld;
    var current = this.value();
    var diff = [];
    if (previous) {
        diff = $(previous).not(current).get();
    }
    this._savedOld = current.slice(0);
    // diff has the elements removed do whatever you want...
}
Run Code Online (Sandbox Code Playgroud)

我所做的是保存以前的值_savedOld,然后使用jQuery.not计算当前的差异.重要的是要注意使用slice克隆以前的值列表,如果我们保存,current那么我们实际上是保存对当前列表的引用,因为它是下次我们尝试使用时的参考,我们再次得到当前值.

编辑:为了保存初始化期间设置的值,您可以:

dataBound : function (e) {
    saveCurrent(this);
},
change    : function (e) {
    var previous = this._savedOld;
    var current = this.value();
    var diff = $(previous).not(current).get();
    saveCurrent(this);
    // diff has the elements removed do whatever you want...
}
Run Code Online (Sandbox Code Playgroud)

其中saveCurrent一个函数定义为:

function saveCurrent(multi) {
    multi._savedOld = multi.value().slice(0);
}
Run Code Online (Sandbox Code Playgroud)