Сброс значений дочернего виджета Kendoui, когда родительский виджет испытывает событие изменения
У меня есть родительский и дочерний виджеты со списком, которые инициализируются значениями. Я указываю "инициализировано со значениями", потому что у меня нет проблем, когда я имею дело с родительскими и дочерними виджетами, которые инициализируются без каких-либо значений.
Вот код инициализации родительского виджета:
var jsonObj = GetSavedJSONObject(key);
var value = (jsonObj) ? '' + jsonObj.Id : '';
var text = (jsonObj) ? '' + jsonObj.Name : '';
$("#" + key).kendoComboBox({
placeholder: placeholder,
dataTextField: dataText,
dataValueField: dataValue,
filter: "contains",
autoBind: false,
enable: canEditAll,
dataSource: {
type: "jsonp",
transport: {
read: {
url: urlValue,
type: "POST"
}
},
error: function (e) {
console.log(e);
}
},
value : value,
text : text,
select: selectEvent,
change: changeEvent
});
Вот код инициализации дочернего виджета:
var jsonObj = GetSavedJSONObject(key);
var value = (jsonObj) ? '' + jsonObj.Id : '';
var text = (jsonObj) ? '' + jsonObj.Name : '';
$("#" + key).kendoComboBox({
placeholder: placeholder,
cascadeFrom: cascadeFromId,
dataTextField: dataText,
dataValueField: dataValue,
filter: "contains",
autoBind: false,
delay: 300,
enable: canEditAll,
dataSource: {
type: "jsonp",
serverFiltering: true,
transport: {
read: {
url: urlValue,
data: getRateTypeSelected,
type: "POST"
}
},
error: function(e) {
console.log(e);
}
},
value : value,
text : text,
select: selectEvent2,
change: changeEvent2
});
В событии select родителя я делаю это:
var childCombobox = $("#childWidget").data("kendoComboBox");
if (childCombobox ) {
//setting parent value here
e.sender.value(dataItem.Id);
//should unset/clear the child widget per docs
childCombobox.value(null);
childCombobox.dataSource.read();
if ($"#parentWidget").val()){
childCombobox.enable(true);
}else{
childCombobox.enable(false);
}
console.log(childCombobox.value());
console.log(childCombobox.text());
console.log(childCombobox.input.val());
console.log($("#childWidget").val());
console.log(childCombobox);
}
Из документации, которую я видел, делаю это:
combobox .value(null);
должно было быть достаточно, чтобы очистить выбор от дочернего виджета. Распечатки в консоли во время выполнения показывают, что значения "". Однако в пользовательском интерфейсе я все еще вижу старые значения дочернего виджета. Поэтому, если бы старый dataText дочернего виджета был "Токио" с dataValue, равным 3, я бы увидел значение "3", отображаемое в дочернем виджете. Любые пункты будут с благодарностью.
1 ответ
Согласно документации для события Select:
"Событие не запускается, когда элемент выбран программно".
Говорят, чтобы использовать событие Каскад:
"Запускается, когда значение виджета изменяется через API или взаимодействие с пользователем".