我正在尝试创建自定义敲除 bindingHandler 以添加自定义 jQuery UI 小部件,但在尝试访问绑定期间创建的元素时遇到了麻烦。我确信我缺少一些基本的东西。我有以下html:
<table data-bind="myGrid: {}">
<thead>
<tr data-bind="foreach: { data: columns, as: 'column' }">
<th data-bind="text: column"></th>
</tr>
</thead>
<tbody data-bind="foreach: { data: rows, as: 'row' }">
<tr data-bind="foreach: { data: $parent.columns, as: 'column' }">
<td data-bind="text: row[column]"></td>
</tr>
</tbody>
</table>
以及以下 javascript:
var vm = {
columns: [
'A', 'B'
],
rows: []
};
$.widget("my.grid", {
_create: function() {
var columns = this.element.find('th');
}
});
ko.bindingHandlers.myGrid = {
init: function (element) {
//$(element).grid();
},
update: function(element) {
$(element).grid();
}
};
ko.applyBindings(vm);
创建小部件时,它需要找到从绑定创建的每个元素。但是,这些元素似乎不是在那个时间点创建的。我已经尝试过 bindinghandler 的 init 和 update 方法。
如果我手动将小部件添加到元素中,这将有效,而不是在绑定处理程序中。
何时以及如何访问从数据绑定创建的元素,以便我的 jQuery 小部件可以修改它们?