0
我寫了一個簡單的應用程序從服務器 C#代碼 公共JsonResult閱讀(){ VAR 產品= db.Products得到JSON數據; return Json(GetProducts(),JsonRequestBehavior.AllowGet); }knockoutJS JSON沒有轉換爲可觀察
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"}]
i之後具有解析JSON,我不能使用所解析的對象來更新observerable。
有誰知道爲什麼會發生這種情況?
感謝您的幫助,但是,即使我將代碼更改爲$ .getJSON(「http:// localhost:50998/Home/Read「,函數(data){self.products(JSON.parse(data)); });它仍然無法工作,是否有任何其他問題與我的代碼。 – Roger 2012-01-18 20:19:27
所以你想讓你的JSON中的每個項目的每個屬性都是ko.observable?如果是的話,我建議使用knockouts貼圖插件http://knockoutjs.com/documentation/plugins-mapping.html這將爲你做到這一點。 – 2012-01-18 20:24:23
謝謝,我想要的是遵循knockoutjs學習中的同一個示例從odata獲取所有電子郵件並綁定到列表,但是我寫了一個操作返回JSON數據,因此我使用$ .getJSON獲取數據,並且綁定到列表。在教程中,它不需要綁定每個項目的所有屬性,只需獲取數據並更新可觀察文件夾,然後循環查看每封電子郵件。我會先嚐試地圖插件,看看它是否工作。 – Roger 2012-01-18 22:05:23