ฉันจะหลีกเลี่ยงวงเล็บปีกกาเพื่อแสดงบนหน้าเมื่อใช้ AngularJS ได้อย่างไร


98

ฉันต้องการให้ผู้ใช้เห็นวงเล็บปีกกาสองชั้น แต่ Angular จะผูกโดยอัตโนมัติ นี่เป็นกรณีตรงข้ามของคำถามนี้ที่พวกเขาไม่ต้องการเห็นวงเล็บปีกกาที่ใช้ในการผูกเมื่อหน้ากำลังโหลด

ฉันต้องการให้ผู้ใช้เห็นสิ่งนี้:

My name is {{person.name}}.

แต่ Angular จะแทนที่{{person.name}}ด้วยค่า ฉันคิดว่ามันอาจได้ผล แต่เชิงมุมยังคงแทนที่ด้วยค่า:

{{person.name}}

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


หากคุณยินดีที่จะใช้ตัวคั่นอื่นทั้งหมด (เช่น[[ ]]): stackoverflow.com/questions/12923521/…
Thilo

2
ขอบคุณฉันเห็นว่า แต่ประเด็นทั้งหมดคือหน้าตัวอย่างที่แสดงให้เห็นว่าเครื่องมือจัดฟันทำงานอย่างไรและฉันต้องการดูแหล่งที่มาเพื่อให้ดูเหมือนกับสิ่งที่อยู่ในหน้าที่แสดงตัวอย่างหากเป็นเรื่องที่สมเหตุสมผล
Jason Goemaat


1
@MaximeLorant นั่นเป็นปัญหาที่แตกต่างไปจากเดิมอย่างสิ้นเชิงกับการป้องกันไม่ให้แสดงเครื่องหมายวงเล็บปีกกาชั่วขณะเมื่อหน้ากำลังโหลดคำถามนี้เกี่ยวกับการให้พวกเขาแสดงแม้ว่าจะโหลดหน้าเว็บแล้วก็ตามและเพื่อป้องกันไม่ให้เชิงมุมผูกมัด
Jason Goemaat

คำตอบ:


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

เอกสาร @ ngNonBindable


6
คุณยังสามารถใช้ <div> หรือแท็กอะไรก็ได้เพียงแค่เพิ่ม ng-non-bindable
Mike Pugh

5
จะเกิดอะไรขึ้นถ้า{{value}}อยู่ภายในค่าแท็กอินพุต?
Timo Huovinen

@TimoHuovinen เพื่อการส่งออกวงเล็บปีกกาใน HTML แอตทริบิวต์เห็นคำตอบของฉัน
joeytwiddle

@TimoHuovinen คุณสามารถใช้ng-non-bindableในองค์ประกอบคอนเทนเนอร์คุณสามารถดูคำตอบของฉัน: stackoverflow.com/a/42511222/1407491
Nabi KAZ

สิ่งนี้ใช้ไม่ได้ในปัจจุบัน อย่างไรก็ตามการใช้ Angular 8. คำตอบของ @joeytwiddle ทำได้
JE Carter II

30

แก้ไข: การเพิ่ม \ slash ระหว่างวงเล็บภายในเครื่องหมายคำพูดใช้ได้ผล

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

เช่นกัน .. โดยผ่านการตีความเชิงมุม

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

นี่ด้วย ..

{{ person.name }<x>} 

{{ person.name }<!>}

ให้ฉัน aLexer Error
Jason Goemaat

1
{{'{{' asd '}}'}} แล้วเขา
ล่ะ

4
นี่เป็นคำตอบที่ล่าช้าสำหรับคำถามที่มีคำตอบที่ยอมรับได้ หากคุณเลือกที่จะให้คำตอบใหม่คุณควรใช้ความระมัดระวังเป็นพิเศษเพื่อให้แน่ใจว่าโซลูชันนั้นใช้ได้ผลและควรระบุเหตุผลที่น่าสนใจว่าทำไมคำตอบนี้จึงเป็นที่ต้องการสำหรับคำตอบที่ยอมรับ นอกจากนี้สิ่งนี้ไม่ได้ตอบคำถามโดยตรงอยู่ดี
Claies

ชอบอันนี้{{...}<!---->}.
ROMANIA_engineer

11

ในกรณีที่เราต้องการที่จะนำเสนอในวงเล็บปีกกาตัวยึดเพื่อให้พวกเขาต้องการที่จะปรากฏภายใน HTML แอตทริบิวต์ เราใช้สิ่งนี้:

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

อย่างที่คุณเห็นเรากำลังสร้างสตริงจากสตริงที่เล็กกว่าสามสายเพื่อแยกวงเล็บปีกกาออกจากกัน

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

สิ่งนี้หลีกเลี่ยงการใช้ng-non-bindableเพื่อให้เราสามารถใช้ng-แอตทริบิวต์ที่อื่นในองค์ประกอบต่อไปได้


ใช้งานได้ (เมื่อเร็ว ๆ นี้เป็นเชิงมุม 8)
JE Carter II

3

ใช้ng-non-bindableในคอนเทนเนอร์ซึ่งมีผลกับองค์ประกอบทั้งหมดภายในคอนเทนเนอร์ที่นี่

<div ng-non-bindable>
  <span>{{person.name}}</span>
  <img src="#" alt="{{person.name}}">
  <input placeholder="{{person.name}}">
</div>


1

อัปเดตสำหรับ Angular 9

ใช้ngNonBindableเพื่อหลีกเลี่ยงการรวมการแก้ไข

<div ngNonBindable>
  My name is {{person.name}}
</div>

1

ฉันต้องการวงเล็บเดียวในข้อความและวิธีแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉัน ดังนั้นไม่ต้องการให้ Angular แนะนำ

เวอร์ชันเชิงมุม: 5

ข้อความที่ต้องการ: ฉันชื่อ {person.name}

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

ฉันหวังว่ามันจะช่วยใครสักคน


0

จากคอมไพเลอร์ Angular:

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

ดังนั้นในคำถามเดิมคุณจะได้รับ:

My name is {{ '{' }}{{ '{' }}person.name{{ '}' }}{{ '}' }}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.