Мне нужно использовать чистый JavaScript, чтобы выбрать параметр из элемента select, который оказывается привязанным к объекту Kendo UI Observable (MVVM), и мне нужно, чтобы связанная модель просмотра была обновлена.
<select id = "titleField" data-bind = "value: Title" >
<option value = ""></option>
<option value = "Mr.">Mr.</option>
<option value = "Ms.">Ms.</option>
<option value = "Dr.">Dr.</option>
</select>
Я пытался:
document.getElementById('titleField').value='Mr.';
а также:
var sel = document.getElementById('titleField');
var opts = sel.options;
for (var opt, j = 0; opt = opts[j]; j++) {
if (opt.value == 'Mr.') {
sel.selectedIndex = j;
break;
}
}
Они оба устанавливают поле, однако привязка MVVM не обновляется.
Если модель просмотра не обновляется, то при сохранении записи выбранное значение не сохраняется.
Обычно я бы манипулировал моделью представления напрямую и использовал двустороннюю привязку, примерно так:
myViewModel.Set("Title", "Mr.");
Однако я не могу этого сделать, потому что я использую реализацию браузера CefSharp и не обязательно буду знать или заботиться о том, что пользовательский интерфейс Kendo используется.
Обновлено: Мне пришло в голову, что, возможно, вышеуказанное должно работать, но были некоторые другие странности, такие как проблема с синхронизацией, поэтому я протестировал его на веб-сайте (страница загружена javascript), и действительно, он не обновляет модель представления, используя приведенное выше техники.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ответ, столь очевидный сейчас, должен вызвать событие onChange после обновления элемента.
Для Chrome (моя единственная проблема) это работает:
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);
sel.dispatchEvent(evt);
Теперь модель представления кендо обновлена.
Хороший вопрос, и вы просто опередили меня, получив тот же ответ, за который так проголосовали. Как вы поняли, программное обновление элементов DOM не вызывает событий, как это происходит при использовании пользовательского интерфейса.