knockout绑定如何删除属性

时间:2013-05-21 12:42:05

标签: knockout.js

假设我有一个Html元素

<element testattribute='a'></element>

我知道我可以使用这样的绑定传递testattribute的值:

<element data-bind="attr: { testattribute: 'a'}></element>

但是如何通过绑定完全删除此属性。 所以如果原始值是

 <element testattribute: 'a'></element>

我的最终结果应该是

<element></element>

3 个答案:

答案 0 :(得分:25)

如果值为attrfalsenull,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 -->