我正在处理一些自定义绑定,其中一个我希望能够从一些字符串数组中显示一个表格。
小提琴
我将其简化为这个自定义绑定:
ko.bindingHandlers.table = {
init: function tableBinding(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
element.innerHTML = tableTemplate;
var innerBindingContext = bindingContext.createChildContext(valueAccessor());
ko.applyBindingsToDescendants(innerBindingContext, element);
return {
controlsDescendantBindings: true
};
}
};
这是模板的内容:
<!-- if: head && head.length -->
<thead>
<tr data-bind="foreach: head">
<th data-bind="text: $rawData">not working th</th>
</tr>
</thead>
<!-- /ko -->
<tbody data-bind="foreach: rows">
<tr data-bind="foreach: $data">
<td data-bind="text: $data">not working td</td>
</tr>
</tbody>
还有一些示例数据。
ko.applyBindings({
table: {
head: ["Name", "Position"],
rows: [
["John", "Janitor"],
["Mike", "IT"],
["Paul", "HR"],
["Rick", "Coffee Fetcher"]
]
}
});
我正在使用 Knockout 3.0,但是任何可以在 Knockout 2.x 上工作的东西也可以在这里工作。如果您查看小提琴,则该<thead>
部分显示正确,但主体的绑定却没有。如果我内联模板并使用with
绑定(如with: table
.