Knockout.js fromJSON不更新ViewModel

Knockout.js fromJSON不更新ViewModel,knockout.js,Knockout.js,我处理的简单案例如下: <ul data-bind='template: {name : "namesTemplate", data:viewModel}'> </ul> <script id='namesTemplate' type='text/html'> {{each $data}} <li>${ Name }</li> {{/each}} </script> <span da

我处理的简单案例如下:

<ul data-bind='template: {name : "namesTemplate", data:viewModel}'>
</ul>

<script id='namesTemplate' type='text/html'>
    {{each $data}}
        <li>${ Name }</li>
    {{/each}}
</script>

<span data-bind="click: fire">Click Me</span>

<script type='text/javascript'>

    var viewModel = ko.observableArray([{ "Name": "Tom" },
                                        { "Name": "Pete" },
                                        { "Name": "Dave"}]);

    viewModel.fire = function () {
        $.getJSON("Post", function (result) {
            viewModel = ko.mapping.fromJSON(result);
        });
    }

    ko.applyBindings(viewModel);

</script>
单击“单击我”后,无序列表不会被更新。我哪里做错了


谢谢。

看看我的例子:

以及Html:

<ul data-bind='template: {name : "namesTemplate", foreach:names}'></ul>

<span data-bind="click: fire">Click Me</span>

<script id='namesTemplate' type='text/html'>
    <li data-bind="text: Name"/>
</script>
两个想法:

1) 在视图模型上命名属性:

var viewModel = { employees: ko.observableArray([{ "Name": "Tom" },
                                                 { "Name": "Pete" },
                                                 { "Name": "Dave"}]);
};
2) 由于视图模型中已经有数据,可能应该使用ko.mapping.updateFromJS

viewModel.fire = function () {
    $.getJSON("Post", function (result) {
        ko.mapping.updateFromJS(viewModel.employees, result);
    });
}

嘿,为回应干杯。尝试此操作时,我收到错误:uncaughttypeerror:Object function(d,b){var a=b?d.bind(b):d,f=newp.$a(a,function(){p.a.N(e,f)});e.push(f);return f}没有“each”方法——有什么想法吗?
this.names.push([{"Name": "test"}]);
var viewModel = { employees: ko.observableArray([{ "Name": "Tom" },
                                                 { "Name": "Pete" },
                                                 { "Name": "Dave"}]);
};
viewModel.fire = function () {
    $.getJSON("Post", function (result) {
        ko.mapping.updateFromJS(viewModel.employees, result);
    });
}