我在这里使用datatables knockout扩展名:https://github.com/CogShift/Knockout.Extensions
我试图通过发出ajax请求从服务器检索json,然后使数组可观察。 但是它说aaData是未定义的。
我的表格定义:
<table id="table" data-bind="dataTable: {
dataSource: getData,
aaData:observableArray,
columns: [
'Column1',
'Column2',
'Column3',
{ mDataProp: 'IsSelected', bSortable: false }
]
}">
<thead>
<tr>
<td>Column 1</td>
<td>Column 2</td>
<td>Column 3</td>
<td>Select All <input type="checkbox" name="chkSelectAll" data-bind="checked: selectAll" /></td>
</tr>
</thead>
<tbody>
</tbody>
</table>
这是ajax电话:
this.getData = function (options, callback) {
$.ajax({
url: '/Home/Contact',
data: ko.toJSON(options),
type: "POST",
contentType: "application/json charset=utf-8",
dataType: "json",
success: function (responseData, textStatus, jqXHR) {
for (key in responseData) {
var item = {
id:responseData[key].categoryid,
name: responseData[key].categoryname, // Push the key on the array
value: responseData[key].description // Push the key's value on the array
};
self.dataArray.push(item);
}
$('#table').dataTable().fnAddData(self.observableArray());
}
});
}
答案 0 :(得分:1)
确保使用版本1.9.1较新的版本不起作用。 您应该使用回调而不是手动添加数据
像
callback({
Data: result,
TotalRecords: count,
DisplayedRecords: displayedCount
});
我已经对这里找到的扩展器做了一些修复。 https://github.com/AndersMalmgren/Knockout.Extensions 最大的变化是它允许您访问与DOM分离的数据表对象