我有一个 Knockout 自定义绑定处理程序,我想在其中调用 foreach 绑定功能,然后调用回调函数。我不断收到“未捕获的错误:您不能将绑定多次应用于同一个元素。”现在我尝试执行此操作时出现错误。
我的自定义绑定非常简单(打字稿):
/// <reference path="knockout.d.ts" />
ko.bindingHandlers["postForeach"] = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
if (!allBindingsAccessor().postForeachCallback)
throw "Callback not defined for postForeach binding!";
//call foreach init functionality
ko.bindingHandlers['foreach'].init(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
//call foreach update functionality
ko.bindingHandlers['foreach'].update(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);
//call callback
allBindingsAccessor().postForeachCallback();
}
};
在构建这个时我有什么遗漏吗?
谢谢!
编辑:
回调函数
self.populateMainContentWindow = function () {
var dataTable = $(this.tableId).dataTable();
dataTable.fnDestroy();
// create the datatable
var actualTable = this.jQuery(this.tableId);
if (actualTable.length == 0) {
return false;
}
// create the data table with options
var newDataTable = actualTable.dataTable(this.options);
// always set the width afterwards
actualTable.css("width", "100%");
};
数据绑定签名(在“with”绑定中):
postForeach: array, postForeachCallback: $parent.viewModel().populateMainContentWindow