這是做它的方式......我已經顯示這一個的jsfiddle:
爲了得到這個工作,我有兩個回調方法添加到原來的淘汰賽的foreach綁定定義。我目前正試圖將這些事件納入最新版本的淘汰賽。我需要添加一個beforeRenderAll和afterRenderAll回調來銷燬數據表,並在敲除foreach綁定後添加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 with bootstrap
jsfiddle with jqueryUI
好像 「用戶」 沒有你所期望的數據。我會使用Chrome的開發工具和「console.debug(用戶)」;或「調試器」;在「ViewModel.usersList.pushAll(users)」之前的行查找從服務器收到的內容。 此外,如果你是Windows用戶,應該嘗試從Telerik(http://www.telerik.com/fiddler)的提琴手嗅探HTTP請求/響應 – jevgenig 2014-10-01 07:16:38
我有用戶,我看到他們,但是當我嘗試過濾它們,綁定中斷 – 2014-10-01 07:23:47
請提供過濾代碼 – jevgenig 2014-10-01 07:25:00