Knockoutjs 不更新视图模型
Knockoutjs does not update 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);
问题是当我更新跨度文本时,可观察对象不会更新。虽然我在跨度中有文件名,但可观察到的是空的。当 span 文本发生变化时,如何让 observable 自行更新?
我根据对您问题的评论做了 quick fiddle。这应该有效:
jQuery(document).ready(function ($) {
'use strict';
$(".file-input").change(function () {
var elem = $("#upload-file-info");
viewModel.image($(this).val());
});
var viewModel = {
image: ko.observable()
};
viewModel.image.subscribe(function (value) {
alert(value);
});
ko.applyBindings(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);
问题是当我更新跨度文本时,可观察对象不会更新。虽然我在跨度中有文件名,但可观察到的是空的。当 span 文本发生变化时,如何让 observable 自行更新?
我根据对您问题的评论做了 quick fiddle。这应该有效:
jQuery(document).ready(function ($) {
'use strict';
$(".file-input").change(function () {
var elem = $("#upload-file-info");
viewModel.image($(this).val());
});
var viewModel = {
image: ko.observable()
};
viewModel.image.subscribe(function (value) {
alert(value);
});
ko.applyBindings(viewModel);
});