【发布时间】:2016-01-10 01:06:33
【问题描述】:
我在here 的以下教程中介绍了如何将 DataTables 与 KnockoutJS 和 Knockout 映射器绑定。从我所见,我只需要提供我的对象并将绑定应用到表,但是当我这样做时,我什么也得不到(没有错误,也没有显示数据)。我错过了什么?
控制器 JSON 数据:
public virtual JsonResult GetRecordsJsonResult()
{
var userBusinessLogic = InterfaceResolver.ResolveWithTransaction<IUserBusinessLogic>();
var records = userBusinessLogic.GetAll().Select(x => new
{
x.Id,
x.FirstName,
x.LastName,
x.Email
}).OrderBy(i => i.Id);
var data = Json(new
{
max = records.Count(),
items = records
}, JsonRequestBehavior.AllowGet);
return data;
}
HTML:
<script type="text/javascript">
$(function () {
function viewModel(data) {
console.log("viewModel");
var self = this;
ko.mapping.fromJS(data, {}, self);
console.log(self);
console.log("data");
console.log(data);
}
$.ajax({
url: "@Url.Action("GetRecordsJsonResult")", success: function (data) {
ko.applyBindings(new viewModel(data));
$("#items").DataTable({ responsive: true });
}
});
});
</script>
<table id="items" class="display table table-striped table-responsive table-bordered table-hover">
<thead>
<tr>
<th>ID</th>
<th>First name</th>
<th>Last name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td><span data-bind="text: $data.Id"></span></td>
<td><span data-bind="text: $data.FirstName"></span></td>
<td><span data-bind="text: $data.LastName"></span></td>
<td><span data-bind="text: $data.Emaiol"></span></td>
</tr>
</tbody>
</table>
我认为我从控制器获取项目的方式可能存在错误,因为当我遵循教程时一切正常。有任何想法吗?感谢您的宝贵时间。
【问题讨论】:
-
它是否显示没有
$("#items").DataTable({ responsive: true });行的表格?也可以使用<tbody data-bind="foreach: items"> -
谢谢,我错过了
标签: javascript c# asp.net-mvc knockout.js knockout-mapping-plugin