Knockoutjs不会更新viewmodel

时间:2015-04-10 06:25:55

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

这个范围与knockoutjs绑定:

viewModel = {
image: ko.observable()
}

ko.applyBindings(viewModel);

问题是当我更新span文本时,observable不会更新。虽然我在span中有文件名,但observable是空的。当跨区文本发生变化时,如何让observable自行更新?

1 个答案:

答案 0 :(得分:1)

根据我对你问题的评论我做了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);
});