Knockout绑定是膨胀的html(表单元格),如何使用javascript创建绑定或从父元素绑定

Knockout binding is bloating html (table cells), how to create bindings with javascript or bind from parent element?

本文关键字:绑定 javascript 何使用 创建 元素 膨胀 html 单元格 表单 Knockout      更新时间:2023-09-26

我已经通过敲除创建了一个可重用的网格组件,我发现我的html在data-bind="..."字符串中变得非常膨胀,尤其是在<td>元素中。

我可以有一个8列20行的网格,可以产生160个单元格。问题是我所有的细胞都是这样的:

<td data-bind="text: typeof rowText == 'function' ? rowText($parent) : $parent[rowText],
event: { dblclick: function() { $root.rowDoubleClicked($parent); } },
css: $data.columnClass">Yale University</td>

我甚至可以添加未来的绑定。

如果有一种方法可以将绑定应用于<tbody>,从而自动将绑定应用到它的子<td>元素,那就太好了。或者,也许有一种方法可以通过javascript应用绑定,而不是使用"数据绑定"属性?

通常只有您(开发人员)查看代码,因此在总体方案中,它的外观并不重要。你可以格式化你的标记,使其更容易遵循:

<td data-bind="
    text: typeof rowText == 'function' ? rowText($parent) : $parent[rowText],
    event: { dblclick: function() { $root.rowDoubleClicked($parent); } },
    css: $data.columnClass">Yale University</td>

您的文本绑定可以通过将该检查推回到视图模型来清理,也许可以使用为您执行该检查的computed。

敲除模板可能有助于"美化"标记,但无论如何,它实际上只是在移动它。