Powiedzmy, że mam element HTML
<element testattribute="a"></element>
Wiem, że mogę przekazać wartość atrybutu testattribute przy użyciu takiego powiązania:
<element data-bind="attr: { testattribute: "a"}></element>
Ale jak mogę całkowicie usunąć ten atrybut przez powiązanie. Więc jeśli pierwotna wartość to
<element testattribute: "a"></element>
moim końcowym wynikiem powinno być
<element></element>
Odpowiedzi:
24 dla odpowiedzi № 1The attr
wiążący w KO faktycznie usunie atrybut, jeśli wartość wynosi false
, null
, lub undefined
. Jeśli więc powiążesz z obserwowalnym, a następnie ustawisz jedną z tych wartości (nie pusty ciąg), wówczas atrybut zostanie usunięty.
3 dla odpowiedzi № 2
powinieneś zrobić to trójkowe inline, ponieważ formularz nie akceptuje kilku zaznaczonych opcji i zignoruje komentarze nokautu, więc żadne nie zostanie sprawdzone, aby uniknąć:
<input type="radio" data-bind="attr:{"checked":($data.amount > 0) ? "checked" : false}" id="q156" name="foo" value="positive" />
to ustawi dokładne!
0 dla odpowiedzi № 3
Aby wyświetlić element, można użyć powiązania warunkowego
http://knockoutjs.com/documentation/if-binding.html
To, co możesz zrobić, to mieć dwie wersje elementu, jedną z wiązaniem attr, a drugą bez i użyj następującego kodu, aby dowiedzieć się, co powinno być wyświetlane dla tego konkretnego powiązania.
<!-- ko if: someExpressionGoesHere -->
<element data-bind="attr: { testattribute: "a"}></element>
<!-- /ko -->
<!-- ko if: someExpressionGoesHere == false -->
<element></element>
<!-- /ko -->