15

假设我有一个 Html 元素

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

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

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

但是我怎样才能通过绑定完全删除这个属性。所以如果原始值是

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

我的最终结果应该是

<element></element>
4

3 回答 3

26

如果值为 、 或 ,则 KO 中的绑定实际上会删除该attr 属性。因此,如果您绑定一个可观察对象,然后将其设置为这些值之一(不是空字符串),那么该属性将被删除。falsenullundefined

于 2013-05-21T13:00:03.493 回答
3

你应该这样做三元内联,因为表单不接受几个选中的单选按钮,它会忽略淘汰赛评论,所以不会检查任何人以避免这样做:

<input type="radio" data-bind="attr:{'checked':($data.amount > 0) ? 'checked' : false}" id="q156" name="foo" value="positive" />

这将设置准确!

于 2016-05-31T13:31:43.043 回答
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 -->
于 2013-05-21T12:57:02.417 回答