带有虚拟化的Kendo MultiSelect:DataSource Data空为几毫秒

问题描述 投票:0回答:1
$("#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

事件。然后使用事件处理程序并聆听价值更改。请记住,该事件会在每个值更改(即用户与组件的互动)上发射。这是一个
kendo-ui kendo-multiselect
1个回答
0
投票
.

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.