На моем взгляде, у меня есть входной файл:Knockoutjs не обновляет ViewModel
<input type="file" class="file-input" name="file_source" size="40" onchange=''>
И пядь, в котором я показываю загруженный файл:
<span class='label label-info' id="upload-file-info" data-bind="text: image"></span>
$(".file-input").change(function() {
var elem = $("#upload-file-info");
elem.html = $(this).val();
});
Этот пролет переплетен с knockoutjs:
viewModel = {
image: ko.observable()
}
ko.applyBindings(viewModel);
Проблема в том, что наблюдаемый не обновляется при обновлении текста диапазона. Хотя у меня есть имя файла в промежутке, наблюдаемый пуст. Как я могу заставить наблюдаемое обновлять себя при изменении текста диапазона?
Как обновляется изображение? В каком смысле? –
Вы переписываете свойство 'jQuery.fn.html' элемента, поэтому ничего не должно делать - он мог бы работать с помощью' elem.html ($ (this) .val()) ', хотя я не уверен, KO поддерживает двустороннюю привязку для элементов . Я думаю, что вы получили идею назад, общий способ сделать это состоит в том, что ваш 'viewModel' контролирует ваше представление. Поэтому вы обычно хотите установить модель и позволить обновлять представление для вас. – mfeineis
При изменении «file-input» я добавляю имя файла в диапазон – stackUnderflow