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