Настройка Javascript для выбора в Kendo UI MVVM - PullRequest
0 голосов
/ 12 октября 2018

Мне нужно использовать чистый JavaScript, чтобы выбрать опцию из элемента select, который оказывается привязанным к наблюдаемому объекту пользовательского интерфейса Kendo (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 UI использует или не заботится об этом.

РЕДАКТИРОВАТЬ: мне пришло в голову, что, возможно, вышеприведенное должноработали, но происходили некоторые другие странности, такие как проблема с синхронизацией, поэтому я проверил это на веб-сайте (загруженный страницей javascript), и, действительно, он не обновляет модель представления, используя описанные выше методы.

1 Ответ

0 голосов
/ 12 октября 2018

Ответ, столь очевидный сейчас, должен вызвать событие onChange после обновления элемента.

Для Chrome (моя единственная задача) это работает:

var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);
sel.dispatchEvent(evt);

Теперь модель представления кендообновляется.

...