1

カテゴリを宣言する剣道スケジューラがあります。イベント モデルには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>

およびスケジューラのedit(e)コールバックで

var categ_editor = $("#categories").kendoMultiSelect({
  dataTextField: "value",
  dataValueField: "value",
  itemTemplate: '<div class="k-state-default"  style=\"width:100%; height:16px;\" ><div  style=\"background-color:#:data.color#; width:14px; height:14px;display:inline-block;\" ></div>&nbsp;#: data.value #</div>',
  tagTemplate: '<span class="k-state-default"><b   style=\"background-color:#:data.color#;\" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b>&nbsp;#: data.value #</span>',

  dataSource: {
    data: [{
      text: "",
      value: "red",
      color: "#FF0000"
    }, {
      text: "",
      value: "green",
      color: "#00FF00"
    }, {
      text: "",
      value: "blue",
      color: "#0000FF"
    }]
  }
}).data("kendoMultiSelect");

したがって、スケジューラはすべて正常に表示され、複数の値を正しく処理します。しかし、カテゴリを編集しているとき、スケジューラはCategoryオブジェクト全体を ( とtextcolor) このように送信します

"Categories": [{
  "text": "",
  "value": "red",
  "color": "#FF0000"
}, {
  "text": "",
  "value": "green",
  "color": "#00FF00"
}]

しかし、正しい JSON でなければなりません"Categories":["red","green"]"

この動作を修正するにはどうすればよいですか?

4

1 に答える 1

2

複数選択データ ソースにはオブジェクトのコレクションが含まれているため、複数選択から取得する値はオブジェクトの形式になります。これは、valuePrimitiveプロパティがデフォルトで設定されているため、この場合はプリミティブ値ではなく、データ ソース内のデータfalseを返すためです。typeobject

trueオブジェクト全体ではなく値のみを返すようにするには、 に変更する必要があります。複数選択の定義は次のようになります。

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

この道場を見て違いを知ってください。

于 2015-05-19T08:25:53.697 に答える