【发布时间】:2015-11-24 04:54:33
【问题描述】:
我正在尝试通过 Web API 调用填充可观察数组,但我很难使用 jQuery get 调用来弄清楚它。
当我在数组中硬编码时它在这里工作
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<table>
<thead><tr> <th>Product</th> <th>Price</th> </tr></thead>
<tbody data-bind='foreach: products'>
<tr>
<td data-bind='text: name'></td>
<td data-bind='text: price'></td>
</tr>
</tbody>
</table>
<script src="Scripts/jquery-1.10.2.min.js"></script>
<script src="Scripts/knockout-3.3.0.js"></script>
<script>
function product() {
}
function Model() {
var self = this;
this.products = ko.observableArray();
}
var mymodel = new Model();
mymodel.products.push(product = { name: "Beer", price: 10.99 });
mymodel.products.push(product = { name: "Brats", price: 7.99 });
mymodel.products.push(product = { name: "Buns", price: 1.49 });
}
$(document).ready(function () {
ko.applyBindings(mymodel);
});
</script>
</body>
</html>
接下来我将产品数组的硬编码值替换为 Web API 调用。
public class productController : ApiController
{
public IEnumerable<product> get()
{
List<product> products = new List<product>
{
new product() { name="Beer", price=10.99},
new product() { name="Brats", price=7.99},
new product() { name="Buns", price=1.49},
};
return products;
}
因此,当我转到 URL /api/product 时,我得到了。
[{"name":"Beer","price":10.99},{"name":"Brats","price":7.99},{"name":"Buns","price":1.49}]
所以现在我想从 Web API 填充我的 observable 数组,但我尝试过在这里卡住了。
function populateProducts() {
$.getJSON("/api/products", function (myData) {
$.each(myData, function (key, value) {
mymodel.products.push(product = {key: value, });
});
});
但这似乎不起作用。
我不想定义类产品及其属性,因为当我实际这样做时会有很多属性,所以我只想从 Web API 中获取它们。所以我不想这样定义产品
function Product(name, price) {
this.name = ko.observable(name);
this.price = ko.observable(price);
}
【问题讨论】:
标签: jquery knockout.js asp.net-web-api get