什么是使用Knockout的"attr"数据绑定与"readonly"和"disabled"等独立属性建议的"最佳实践"方法?
这些属性是特殊的,因为它们通常由属性值设置为属性名(虽然很多浏览器正常工作,如果你只是不包含在HTML的任何值的属性名称)启用:
<input type="text" readonly="readonly" disabled="disabled" value="foo" />
Run Code Online (Sandbox Code Playgroud)
但是,如果你不做要应用这些属性,一般的做法是简单地完全从HTML忽略它们(而不是做这样的事情只读="假"):
<input type="text" value="foo" />
Run Code Online (Sandbox Code Playgroud)
Knockout的"attr"数据绑定不支持这种情况.只要我提供属性名称,我还需要提供一个值:
<input type="text" data-bind="attr: { 'disabled': getDisabledState() }" />
Run Code Online (Sandbox Code Playgroud)
是否有跨浏览器方式关闭'禁用'或'只读'?或者是否有一个自定义绑定的技巧,如果我不想禁用该项或使其成为只读,我可以使用它来呈现任何内容?
我有一些类似以下的HTML:
<div class="control-group">
<input type="text" data-bind="value: $data.DealCode" name="DealCode" class="input-mini" />
</div>
Run Code Online (Sandbox Code Playgroud)
但是,ifnot: $data.DealCodeIsValid我需要呈现以下内容:
<div class="control-group error">
<input type="text" data-bind="value: $data.DealCode" name="DealCode" class="input-mini" />
</div>
Run Code Online (Sandbox Code Playgroud)
请注意div中的附加类"错误".有没有办法用knockoutjs做到这一点?