Json 剑道调度器多选问题

Json 剑道调度器多选问题,json,kendo-ui,telerik,kendo-scheduler,kendo-multiselect,Json,Kendo Ui,Telerik,Kendo Scheduler,Kendo Multiselect,我们有剑道调度程序,我们在那里声明类别。在事件模型中,我们有categories字段,它表示字符串数组。 在调度程序声明中,我们也有资源,例如: resources: [{ field: "categories", dataSource: [{ text: "", value: "red", color: "#FF0000" }, { text: "", value: "green", color: "#00FF00" }, {

我们有剑道调度程序,我们在那里声明类别。在事件模型中,我们有
categories
字段,它表示字符串数组。 在调度程序声明中,我们也有资源,例如:

resources: [{
  field: "categories",
  dataSource: [{
    text: "",
    value: "red",
    color: "#FF0000"
  }, {
    text: "",
    value: "green",
    color: "#00FF00"
  }, {
    text: "blue",
    value: "blue",
    color: "#0000FF"
  }],
  multiple: true,
  title: "Category"
}],
在调度程序编辑模板中,我们有

<label for="categories">Categories</label>
<select data-bind="value:categories" name="categories" id="categories" multiple="multiple" data-placeholder="Select categories...">
</select>
所以,调度器显示的都是好的,并且处理多个值都是正确的。 但当我编辑类别时,调度器会像这样发送整个
类别
对象(带有
文本
颜色

"Categories": [{
  "text": "",
  "value": "red",
  "color": "#FF0000"
}, {
  "text": "",
  "value": "green",
  "color": "#00FF00"
}]
但正确的JSON必须是
“Categories”:[“red”,“green”]“


如何修复此行为?

您的multiselect数据源包含对象集合,因此您从multiselect获得的值将以对象的形式存在。这是因为
valuePrimitive
属性默认设置为
false
,因此它将返回其数据源中在此cas中的
类型
数据e是
对象
而不是原始值

您应该将其更改为
true
,使其仅返回其值而不是整个对象。您的多选定义应如下所示:

var categ_editor = $("#categories").kendoMultiSelect({
  valuePrimitive: true, // this prop you should add
  dataTextField: "value",
  dataValueField: "value",
}).data("kendoMultiSelect");

看看这个可以知道区别。

有代码格式吗?Arman,据我所知,所以不允许代码格式。你可以使用或,例如,对其进行格式设置。这是一项理想的工作,应该由提问者来完成,以便回答者能够轻松理解问题。它很有效!谢谢,朋友!我在这个问题上已经浪费了一周时间。
var categ_editor = $("#categories").kendoMultiSelect({
  valuePrimitive: true, // this prop you should add
  dataTextField: "value",
  dataValueField: "value",
}).data("kendoMultiSelect");