Jak uniknąć nawiasów klamrowych w celu wyświetlenia na stronie podczas korzystania z AngularJS?

98

Chcę, aby użytkownik zobaczył podwójne nawiasy klamrowe, ale Angular wiąże je automatycznie. Jest to odwrotny przypadek tego pytania, w którym chcą oni nie widzieć nawiasów klamrowych używanych do łączenia podczas ładowania strony.

Chcę, aby użytkownik zobaczył to:

My name is {{person.name}}.

Ale Angular zastępuje {{person.name}}wartość. Pomyślałem, że to może zadziałać, ale angular nadal zastępuje go wartością:

{{person.name}}

Plunker: http://plnkr.co/edit/XBJjr6uR1rMAg3Ng7DiJ

Jason Goemaat
źródło
Jeśli chcesz w ogóle zastosować inny ogranicznik (taki jak [[ ]]): stackoverflow.com/questions/12923521/ ...
Thilo
2
Dzięki, widziałem to, ale chodzi o przykładową stronę pokazującą, jak działają nawiasy klamrowe, i chcę, aby przeglądanie źródła było w stanie wyglądać dokładnie tak, jak na stronie pokazującej próbkę, jeśli ma to sens.
Jason Goemaat
1
@MaximeLorant To zupełnie inna kwestia związana z zapobieganiem chwilowemu wyświetlaniu nawiasów klamrowych podczas ładowania strony, to pytanie dotyczy ich wyświetlania nawet po załadowaniu strony i zapobiegania wiązaniu ich przez kąt.
Jason Goemaat

Odpowiedzi:

148
<code ng-non-bindable>{{person.name}}</code>

Dokumentacja @ ngNonBindable

Mike Pugh
źródło
6
Możesz także użyć <div> lub dowolnego tagu, po prostu dodaj ng-non-bindable
Mike Pugh
5
co, jeśli {{value}}znajduje się wewnątrz wartości tagu wejściowego?
Timo Huovinen
@TimoHuovinen, aby wyprowadzić nawiasy klamrowe w atrybucie HTML, zobacz moją odpowiedź .
joeytwiddle
@TimoHuovinen Możesz użyć ng-non-bindableelementu kontenera, możesz zobaczyć moją odpowiedź: stackoverflow.com/a/42511222/1407491
Nabi KAZ
Obecnie to nie działa; używając Angular 8. @joeytwiddle odpowiedział jednak.
JE Carter II
29

Edycja: dodanie \ ukośnika w nawiasach kwadratowych wewnątrz cudzysłowów działa

{{  "{{ person.name }\}"   }}  

to też ... omija interpretację kątową

{{ person.name }<!---->}

to też ..

{{ person.name }<x>} 

{{ person.name }<!>}
bh_earth0
źródło
Daje miLexer Error
Jason Goemaat
1
{{'{{' asd '}}'}} co z jego
bh_earth0,
4
To późna odpowiedź na pytanie z zaakceptowaną odpowiedzią. Jeśli zdecydujesz się podać nową odpowiedź, powinieneś podjąć dodatkowe środki ostrożności, aby upewnić się, że rozwiązanie działa, i podać istotne powody, dla których ta odpowiedź jest preferowana od powszechnie akceptowanej odpowiedzi. To i tak nie odpowiada bezpośrednio na pytanie.
Claies,
Jak dla tego {{...}<!---->}.
ROMANIA_engineer,
11

W naszym przypadku chcieliśmy umieścić nawiasy klamrowe w symbolu zastępczym, więc musiały pojawić się wewnątrz atrybutu HTML . Użyliśmy tego:

 <input placeholder="{{ 'Hello {' + '{person.name}' + '}!' }}" ...>

Jak widać, tworzymy ciąg z trzech mniejszych ciągów, aby rozdzielić nawiasy klamrowe.

'Hello {' + '{person.name}' + '}!'

Pozwala to uniknąć używania, ng-non-bindablewięc możemy nadal używać ng-atrybutów w innym miejscu elementu.

joeytwiddle
źródło
Działa (dopiero od kątowej 8).
JE Carter II
3

Użyj ng-non-bindablew pojemniku, działa to na wszystkie elementy wewnątrz pojemnika.

<div ng-non-bindable>
  <span>{{person.name}}</span>
  <img src="#" alt="{{person.name}}">
  <input placeholder="{{person.name}}">
</div>
Nabi KAZ
źródło
3
<span>{{</span>{{variable.name}}<span>}}</span>
EscapeNetscape
źródło
1

Zaktualizowano dla Angular 9

Służy ngNonBindabledo unikania powiązania interpolacyjnego.

<div ngNonBindable>
  My name is {{person.name}}
</div>
Matt
źródło
1

Chciałem używać pojedynczych nawiasów w całym tekście, a powyższe rozwiązania nie działały. Tak więc chciałem polecić Angular.

Wersja kątowa: 5

Wymagany tekst: Nazywam się {person.name}.

<span>My name is {{'{'}}person.name{{'}'}}.</span>

Mam nadzieję, że to komuś pomoże.

bhavya_karia
źródło
0

Z kompilatora Angular:

Unexpected character "EOF" (Do you have an unescaped "{" in your template? Use "{{ '{' }}") to escape it.)

Więc w pierwotnym pytaniu - skończyłoby się:

My name is {{ '{' }}{{ '{' }}person.name{{ '}' }}{{ '}' }}
user369142
źródło