javascript - Knockoutjs 不更新 View 模型

标签 javascript knockout.js

在我看来,我有文件输入:

<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();
        });

这个span与knockoutjs绑定(bind):

viewModel = {
image: ko.observable()
}

ko.applyBindings(viewModel);

问题是当我更新跨度文本时,可观察值不会更新。虽然我在跨度中有文件名,但可观察到的内容是空的。当跨度文本更改时,如何使可观察的内容自动更新?

最佳答案

我做了一个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);
});

关于javascript - Knockoutjs 不更新 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29554749/

相关文章:

javascript - Nivo slider 在 Chrome 中不起作用

javascript - Turbolinks 不起作用(页面加载两次)

javascript - 当在 onClick 处理程序上使用 map 时,内部函数总是获取最后一个元素

javascript - .Net Select/Select2 knockout javascript - 如果初始值不在下拉列表中,则无法加载初始值

javascript - 我如何进行初始 JavaScript Ajax 初始化?

javascript - 动态变化的 Angular 全局值

javascript - 为什么 req.params 返回未定义?

javascript - 将XML转换为CSV时如何使用knockoutJS?

javascript - ENOENT 在尝试使用 requirejs 加载 ForerunnerDB 时没有这样的文件或目录

knockout.js - 根据条件验证observableArray