【发布时间】:2012-12-19 08:49:54
【问题描述】:
将 Knockout 的“attr”数据绑定与 “readonly” 和 “disabled” 等独立属性一起使用的建议“最佳实践”方式是什么? >?
这些属性是特殊的,因为它们通常通过将属性值设置为属性名称来启用(尽管如果您只是在 HTML 中包含没有任何值的属性名称,许多浏览器也可以正常工作):
<input type="text" readonly="readonly" disabled="disabled" value="foo" />
但是,如果您不希望应用这些属性,通常的做法是从 HTML 中完全省略它们(而不是像 readonly="false" 那样做):
<input type="text" value="foo" />
Knockout 的“attr”数据绑定不支持这种情况。一旦我提供了一个属性名称,我还需要提供一个值:
<input type="text" data-bind="attr: { 'disabled': getDisabledState() }" />
是否有跨浏览器的方式关闭“禁用”或“只读”?或者,如果我不想禁用该项目或将其设为只读,是否可以使用 自定义绑定 来不呈现 任何内容?
【问题讨论】:
-
我不明白,如果你没有禁用甚至显示,为什么你需要提供禁用?
-
我给出的示例旨在简单地演示问题。问题是这样的:HTML 中的一些属性是独立的属性——它们实际上并不需要一个值。如果您不希望这些属性影响 HTML,那么您只需忽略它们即可。但是 Knockout 的“attr”数据绑定机制不支持这种情况。
标签: html data-binding knockout.js readonly disabled-input