Ответ 1
attr
binding в KO фактически удалит атрибут, если значение false
, null
или undefined
. Итак, если вы привязываетесь к наблюдаемому, а затем устанавливаете его в одно из этих значений (не пустая строка), тогда атрибут будет удален.
Скажем, у меня есть элемент HTML
<element testattribute='a'></element>
Я знаю, что могу передать значение testattribute, используя привязку вроде этого:
<element data-bind="attr: { testattribute: 'a'}></element>
Но как я могу полностью удалить этот атрибут через привязку. Поэтому, если исходное значение было
<element testattribute: 'a'></element>
мой конечный результат должен быть
<element></element>
attr
binding в KO фактически удалит атрибут, если значение false
, null
или undefined
. Итак, если вы привязываетесь к наблюдаемому, а затем устанавливаете его в одно из этих значений (не пустая строка), тогда атрибут будет удален.
вы должны сделать эту тройную строку, потому что форма не принимает несколько проверенных переключателей, и она будет игнорировать комментарии нокаута, поэтому никто не будет проверен, чтобы избежать:
<input type="radio" data-bind="attr:{'checked':($data.amount > 0) ? 'checked' : false}" id="q156" name="foo" value="positive" />
это будет точно задано!
Вы можете использовать условную привязку для отображения элемента
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 -->