【发布时间】:2012-06-06 06:13:18
【问题描述】:
我有一个“应该”与 json 结果绑定的表:
<table>
<thead>
<tr>
<th>
Id
</th>
<th>
Number
</th>
<th>
Name
</th>
<th>
Password
</th>
<th>
Role
</th>
</tr>
</thead>
<tbody data-bind="foreach: Employees">
<tr>
<td>
<span data-bind="text: EmployeeId"></span>
</td>
<td>
<span data-bind="text: EmployeeNumber"></span>
</td>
<td>
<span data-bind="text: EmployeeName"></span>
</td>
<td>
<span data-bind="text: EmployeePassword"></span>
</td>
<td>
<span data-bind="text: EmployeeRole"></span>
</td>
</tr>
</tbody>
我的淘汰脚本是这样的:
<script type="text/javascript">
$(document).ready(function () {
var viewModel = {};
var data = $.getJSON("Employees.json", function (data) {
viewModel.model = ko.mapping.fromJSON(data);
ko.applyBindings(viewModel);
}
);
});
</script>
我正在尝试将表与 json 结果绑定,但它不起作用,问题可能出在哪里......这是我在控制器中的 json:
public ActionResult GetEmployees()
{
var r = db.Employees;
var s = new
{
Employees = r.Select(x => new { empId = x.Id, empName = x.Name, empNumber = x.Number, empPassword = x.Password, empRole = x.Role }).ToList()
.Select(x => new
{
EmployeeId = x.empId,
EmployeeName = x.empName,
EmployeeNumber = x.empNumber,
EmployeePassword = x.empPassword,
EmployeeRole = x.empRole
}).ToArray(),
};
return Json(s, JsonRequestBehavior.AllowGet);
}
更新:这是我返回的 json 数据示例:
{"Employees":[{"EmployeeId":1,"EmployeeName":X","EmployeeNumber":"1","EmployeePassword":"x","EmployeeRole":"User"},{"EmployeeId":10,"EmployeeName":"S","EmployeeNumber":"21","EmployeePassword":"s","EmployeeRole":"Admin"}]}
【问题讨论】:
-
ko.applyBindings(viewModel.Model); @madcapnmckay 关于运行开发控制台的建议也很棒。 Knockout 的绑定错误消息很有帮助。或者 viewModel = ko.mapping.fromJSON(data);
-
我究竟应该编辑什么?我没有得到你的评论...
-
如果您在浏览器的开发控制台中没有收到错误,许多浏览器上的 F12,不确定。看来您上面的内容不会绑定,我预计会出现错误。我认为对您的代码进行的两项更改中的任何一项都会绑定。
标签: ajax json asp.net-mvc-3 knockout.js knockout-mapping-plugin