我编写了一个简单的应用程序来从服务器获取JSON数据 C#代码 public JsonResult Read() { var products = db.Products; 返回Json(GetProducts(),JsonRequestBehavior.AllowGet); }
public IEnumerable<Product> GetProducts()
{
var data = db.Products.ToList();
return (data);
}
在视图中,我编写了以下内容来绑定视图模型数据。
<div>
<table data-bind="with: products">
<thead><tr><th>From</th><th>To</th><th>Subject</th></tr></thead>
<tbody data-bind="foreach: Object">
<tr>
<td data-bind="text: id"></td>
<td data-bind="text: name"></td>
<td data-bind="text: description"></td>
</tr>
</tbody>
</table>
</div>
<script type="text/javascript">
function ProductsViewModel() {
var self = this;
self.products = ko.observable();
$.getJSON("http://localhost:50998/Home/Read", function (data) {
self.products = JSON.parse(data);
});
}
ko.applyBindings(new ProductsViewModel());
</script>
Json数据从操作返回如下
[{"ID":1,"Name":"Roger","Description":"Test1"},{"ID":2,"Name":"Roger2","Description":"Test2"}]
在我解析了JSON之后,我无法使用已解析的对象来更新观察者。
有谁知道为什么会这样?
答案 0 :(得分:1)
如果要将self.products
的值(或任何其他可观察值的值)设置为JSON.parse
的结果,则需要将其称为self.products(JSON.parse(data))
。 Observable就像函数一样,所以你需要像函数一样对待它们; - )