Mam moje wejście checkbox, które ustawia dynamicznie wartość "true" na podstawie zmiennej trueVal
, która jest łańcuchem.Przekazywanie wartości dynamicznej z pojedynczym cudzysłowem jako wyrażeniem wartości true powoduje niepowodzenie.
<input ng-model="foo" ng-true-value="'{{trueVal}}'">
Na przykład dla trueVal = "something"
, foo === "something"
gdy pole wyboru jest zaznaczone.
Działa to z wyjątkiem przypadku, gdy trueVal
jest równy łańcuchowi z pojedynczym cudzysłowem: Customer didn't understand
. W tym przypadku nie jest to błąd:
Error: [$parse:lexerr] Lexer Error: Unterminated quote at columns 27-28 ['] in expression ['Customer didn't understand'].
nie mogę zerwać apostrofów ponieważ ciąg powinien być ustawiony jak jest do foo
.
szerszym kontekście:
tworzę grupę wyboru w oparciu o listę options
że dostanę z back-end:
<div ng-repeat="(key,option) in options">
<input type="checkbox"
ng-model="foo[key]"
ng-true-value="'{{option.trueVal}}'"
ng-false-value="null">
</div>
więc, biorąc pod uwagę:
options = {
0: {trueVal: "Customer was late"},
1: {trueVal: "Customer didn't understand"}
};
Spodziewam się zobaczyć:
foo = {
1: "Customer didn't understand"
};
jeśli drugie pole jest zaznaczone.
Dziękuję jeszcze raz za kompleksową edycję i odpowiedź. Podjąłem pierwsze podejście. Poza tym chciałabym móc pochłonąć twoją moc. –