$("#msUsers").kendoMultiSelect({
placeholder: "Select Users...",
autoClose: false,
dataTextField: "UserName",
dataValueField: "UserId",
virtual: {
itemHeight: 40,
mapValueTo: "dataItem",
valueMapper: function (options) {
var ids = options.value;
if (!ids.length) {
options.success([]);
return;
}
$.ajax({
url: "/Home/GetUserByIds",
traditional: true,
data: { ids: ids },
success: function (response) {
options.success(response.length ? response : []);
},
error: function (xhr) {
console.log("Error:", xhr.responseText);
}
});
}
},
dataSource: {
transport: {
read: {
url: "/Home/BindUsers",
dataType: "json",
data: function (options) {
return {
skip: options.skip,
take: options.take,
filter: options.filter
};
}
},
parameterMap: function (data, action) {
if (action === "read") {
return {
take: data.take,
skip: data.skip,
filter: data.filter?.filters?.[0]?.value || ""
};
}
return data;
}
},
schema: {
data: "Data",
total: "Total"
},
pageSize: 40,
serverPaging: true,
serverFiltering: true
}
});
$("#multiSelect").data("kendoMultiSelect").value([1,2]);
// Where [1,2] already exists in the dataSource.
设置该值后,我会立即尝试检索它,但结果是一个空数组
[]
。
$("#multiSelect").data("kendoMultiSelect").value(); // get [] for a few ms
i用
setInterval()
对此进行了测试,并且对于几毫秒,该值在正确更新之前保持为空。
我的代码逻辑需要在设置该值并将其传递给API调用后立即检索该值。但是,如前所述,我收到一个空数组。
在进行之前,我可以在进行一次活动吗?
我可以使用
setTimeout()
,但感觉就像是黑客。
尽管我看不到Kendo的示例中的行为,但您拥有的一个选项是在设置该值之后触发
change
方法
不会触发change事件。然后使用事件处理程序并聆听价值更改。请记住,该事件会在每个值更改(即用户与组件的互动)上发射。这是一个