Привязка нокаута, как удалить атрибут

Скажем, у меня есть элемент HTML

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

Я знаю, что могу передать значение testattribute, используя привязку вроде этого:

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

Но как я могу полностью удалить этот атрибут через привязку. Поэтому, если исходное значение было

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

мой конечный результат должен быть

<element></element>

Ответ 1

attr binding в KO фактически удалит атрибут, если значение false, null или undefined. Итак, если вы привязываетесь к наблюдаемому, а затем устанавливаете его в одно из этих значений (не пустая строка), тогда атрибут будет удален.

Ответ 2

вы должны сделать эту тройную строку, потому что форма не принимает несколько проверенных переключателей, и она будет игнорировать комментарии нокаута, поэтому никто не будет проверен, чтобы избежать:

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

это будет точно задано!

Ответ 3

Вы можете использовать условную привязку для отображения элемента

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 -->