私はゲームを作っており、プレイヤーがプレイ可能なキャラクターレースを選んだ特定の要件を持っています。そして、そのための利用可能な性別のリストレース。 kendo.ui.DropDownListOptions
のCascade
プロパティを使用してこれを行うのは簡単だと思いました...このようにしてください。KendoDropDownList - 1つのドロップから別のドロップまでのカスケードデータ
var racesOptions = {
index: -1,
valuePrimitive: true,
dataTextField: "Name",
dataValueField: "Name",
dataSource: {
transport: {
read: {
dataType: 'json',
url: '/api/races/list',
type: 'GET'
}
}
}
};
var genderOptions = {
index: -1,
valuePrimitive: true,
cascadeFrom: 'race',
cascadeFromField: 'Genders'
};
/api/races/list
からのデータの形は次のようになります。
[{
"Name": "race1",
// ... other data ... //
"Genders": [ "Male", "Female", "Other" ]
}, {
"Name": "race2",
// ... other data ... //
"Genders" : ["Female"]
}, {
"Name": "race3",
// ... other data ... //
"Genders": ["Male"]
}]
私はこれが思いもよらないと思っていました。 2番目のドロップダウンは最初のカスケードからカスケードします。最初に値があるとき、私はCascadeFromField
の値を得ると考えました。しかし、それは起こっていません...実際には、これを達成するための唯一の方法は、#race
ウィジェットのchange
イベントの次のコードです。
change: function (e) {
// the specific race entity selected
var entity = e.sender.dataItem().toJSON();
// set the selected race's genders
var genders = $('#genders').data('kendoDropDownList');
genders.destroy();
genders = $('#genders').kendoDropDownList({
index: -1,
valuePrimitive: true,
dataSource: {
data: entity.Genders
}
}).data('kendoDropDownList');
genders.select(-1);
genders.trigger('change');
}
この変更イベントは機能しますが、厄介で鈍いです。私が期待しているようにカスケーディングを動作させる別の方法はありますか?
したがって、 'valuePrimitive'ではできません。ジェンダーは本格的なオブジェクトではなく、単なる文字列です。 – Ciel