Knockout+DataTables筛选;不起作用
Knockout+DataTables Filtering doesn't work
我有一个包含数据的表,希望能够过滤其中的行,数据来自服务并通过敲除绑定:
<table class="table bordered hovered">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
</tr>
</thead>
<tbody data-bind="foreach: usersList">
<tr>
<td data-bind="text: Id"></td>
<td data-bind="text: UserName"></td>
</tr>
</tbody>
</table>
function getUsers() {
$.getJSON('/api/aspnetusers', null, function (users) {
ViewModel.usersList.pushAll(users);
});
}
getUsers();
$(function () {
$('.table').DataTable();
});
在过滤器输入后,我总是得到:
No data available in table
这可能是时间问题,请尝试等待数据加载后再初始化DataTables:
$.getJSON('/api/aspnetusers', null, function (users) {
ViewModel.usersList.pushAll(users);
}).done(function(){ $('.table').DataTable(); });
这就是实现它的方法……我制作了一个jsfiddle,展示了这一点:
为了实现这一点,我不得不在原来的敲除foreach绑定定义中添加两个回调方法。我目前正试图将这些赛事纳入最新版本的淘汰赛。我需要添加beforeRenderAll和afterRenderAll回调来销毁数据表,并在每一个绑定的knockout添加html后重新初始化数据表。这就像一个魅力。显示这一点的JSFiddle有一个完全可编辑的jquery数据表,通过敲除绑定到ViewModel。
ko.bindingHandlers.DataTablesForEach = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
return ko.bindingHandlers.foreach.init(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var value = ko.unwrap(valueAccessor()),
key = "DataTablesForEach_Initialized";
var newValue = function () {
return {
data: value.data || value,
beforeRenderAll: function(el, index, data){
if (ko.utils.domData.get(element, key)) {
$(element).closest('table').DataTable().destroy();
}
},
afterRenderAll: function (el, index, data) {
$(element).closest('table').DataTable(value.options);
}
};
};
ko.bindingHandlers.foreach.update(element, newValue, allBindingsAccessor, viewModel, bindingContext);
//if we have not previously marked this as initialized and there is currently items in the array, then cache on the element that it has been initialized
if (!ko.utils.domData.get(element, key) && (value.data || value.length)) {
ko.utils.domData.set(element, key, true);
}
return { controlsDescendantBindings: true };
}
};
jsfiddle与引导
jsfiddle with jqueryUI
相关文章:
- 在筛选网格期间,网格负载掩码不起作用
- jQuery dataTables基于类型的列筛选不起作用?Img alt过滤器/排序
- 刷新页面后筛选器不起作用
- JQuery多属性筛选器不起作用
- 筛选器's的第二个参数不起作用
- 控制器中的筛选列表没有'不起作用
- 个别列筛选器在Datatable中不起作用
- Videogular-hh:mm:ss格式的日期筛选器不起作用
- Onresize函数在价格筛选滑块中不起作用
- 剑道 UI 网格筛选器在之前打开弹出窗口时不起作用
- 基于从下拉列表中选择的值的筛选列表不起作用
- 搜索筛选器不起作用.角度Js
- Knockout+DataTables筛选;不起作用
- Backgrid筛选器在主干应用程序中不起作用
- 包含下拉选择(在正文中,而不是标题或筛选器中)的表分类器在IE中不起作用
- 使用complexQuery的Dojo DataGrid筛选不起作用
- 筛选表行不起作用
- wsapi存储的筛选器函数在Rally SDK中不起作用
- ng表编号范围筛选器不起作用
- 筛选复选框以显示其类;不起作用