假设我有一个Html元素
<element testattribute='a'></element>
我知道我可以使用这样的绑定传递testattribute的值:
<element data-bind="attr: { testattribute: 'a'}></element>
但是如何通过绑定完全删除此属性。 所以如果原始值是
<element testattribute: 'a'></element>
我的最终结果应该是
<element></element>
答案 0 :(得分:25)
如果值为attr
,false
或null
,KO中的undefined
binding实际上会删除该属性。因此,如果您绑定了一个observable,然后将其设置为其中一个值(不是空字符串),那么该属性将被删除。
答案 1 :(得分:3)
你应该做这个三元内联,因为表单不接受几个已检查的单选按钮,它会忽略敲除注释,所以没有人会检查以避免这样做:
<input type="radio" data-bind="attr:{'checked':($data.amount > 0) ? 'checked' : false}" id="q156" name="foo" value="positive" />
这将设置准确!
答案 2 :(得分:0)
您可以使用条件绑定来显示元素
http://knockoutjs.com/documentation/if-binding.html
你可以做的是,有两个版本的元素,一个带有attr绑定,一个没有,并使用下面的代码来确定应该为特定绑定显示的内容。
<!-- ko if: someExpressionGoesHere -->
<element data-bind="attr: { testattribute: 'a'}></element>
<!-- /ko -->
<!-- ko if: someExpressionGoesHere == false -->
<element></element>
<!-- /ko -->