ความแตกต่างระหว่างวงเล็บปีกกาคู่และเดี่ยวใน JS เชิงมุมคืออะไร?


192

ฉันยังใหม่กับโลกเชิงมุมนี้ฉันค่อนข้างสับสนกับการใช้เครื่องหมายปีกกาคู่ {{}} และวงเล็บปีกกาเดี่ยว {} หรือบางครั้งไม่มีการใช้เครื่องหมายปีกกาหยิกเพื่อรวมการแสดงออกเช่นในคำสั่ง

  1. ng-class={expression}
  2. normal data binding like{{obj.key}}
  3. ng-hide='mydata==="red"'

คำตอบ:


279

{{}} - วงเล็บปีกกาคู่:

{{}} เป็นการแสดงออกเชิงมุมและค่อนข้างมีประโยชน์เมื่อคุณต้องการเขียนเนื้อหาลงใน HTML:

<div>
    {{planet.name == "Earth" ? "Yeah! We 're home!" : "Eh! Where 're we?"}}
</div>

<!-- with some directives like `ngSrc` -->
<img ng-src="http://www.example.com/gallery/{{hash}}"/>

<!-- set the title attribute -->
<div ng-attr-title="{{celebrity.name}}">...

<!-- set a custom attribute for your custom directive -->
<div custom-directive custom-attr="{{pizza.size}}"></div>

อย่าใช้สิ่งเหล่านี้ในที่ที่มีการแสดงออกอยู่แล้ว!

ตัวอย่างเช่นคำสั่งngClickปฏิบัติต่อสิ่งที่เขียนในระหว่างคำพูดเป็นนิพจน์:

<!-- so dont do this! -->
<!-- <button ng-click="activate({{item}})">... -->  

{} - วงเล็บปีกกาเดียว:

{}ที่เรารู้ว่ายืนสำหรับวัตถุใน JavaScript ที่นี่เหมือนกันไม่มีอะไรแตกต่างกัน:

<div ng-init="distanceWalked = {mon:2, tue:2.5, wed:0.8, thu:3, fri:1.5, 
sat:2, sun:3}">

ด้วยคำสั่งบางอย่างเช่นngClassหรือngStyleยอมรับแผนที่:

<span ng-style="{'color' : 'red'}">{{viruses.length}} viruses found!</span>

<div ng-class="{'green' : vegetable == 'lettuce', 
'red' : vegetable == 'tomato'}">..

ไม่มีวงเล็บปีกกา:

ดังที่ได้กล่าวไปแล้วว่าจะไร้ประโยชน์เมื่ออยู่ในการแสดงออก ค่อนข้างง่าย:

<div ng-if="zoo.enclosure.inmatesCount == 0">
    Alarm! All the monkeys have escaped!
</div>

 


2
เราสามารถใช้ {{}} กับคำสั่ง ng-include ในคุณสมบัติ ng-src
Jay Shukla

5
เช่นเดียวกับคนที่กล่าวถึงในความคิดเห็นวงเล็บปีกกาคู่ {{}} ควรจะอยู่ในคำสั่ง ng-src ระหว่างคำพูด แต่ทำไม ng-src จึงสามารถทำเช่นนั้นได้? มีชื่อสำหรับคำสั่งชนิดพิเศษที่ใช้ {{}} ในเครื่องหมายคำพูดหรือไม่?
ayjay

{{foo-bar}} และ "{{foo-bar}}" แตกต่างกันหรือไม่?
aandis

5
ฉันต้องค้นคว้าเพิ่มเติมเกี่ยวกับเรื่องนี้ด้วยตัวเองเพื่อทำความเข้าใจ แต่ฉันคิดว่าการโพสต์บล็อกนี้ช่วยได้จริงพร้อมกับคำตอบของ @ CodeHater ทำไม AngularJS ถึงใช้วงเล็บปีกกาเดี่ยว {} บางครั้งวงเล็บปีกกา {{}} และบางครั้ง ไม่มีการจัดฟัน?
Prancer

2

อีกสิ่งหนึ่งเกี่ยวกับ{{}} มันยังใช้เป็น Watcher .. โปรดหลีกเลี่ยงมากที่สุดเพื่อประสิทธิภาพที่ดีขึ้น


3
คุณหมายถึง {{}} ลดประสิทธิภาพลงหรือไม่ คุณช่วยจัดหาแหล่งที่มาเพื่อพิสูจน์ได้ไหม?
Don D

1
มีคนยืนยันได้ไหม
GarfieldKlon

1

ฉันรู้ว่านี่เป็นโพสต์เก่าและอาจเป็นหัวข้อออกไปเล็กน้อย แต่นี่เป็นคำตอบของ @DonD และ @GafrieldKlon ...

มันจะดูเหมือนผู้พิทักษ์ถูกวางไว้จริงถ้าคุณจะใช้ng-bindสั่งไม่ได้{{}}เมื่อใช้ ที่ถูกกล่าวว่าฉันเชื่อว่า @riyas คำตอบข้างต้นยังคงเป็นจริงบางส่วนในการหลีกเลี่ยง {{}}นั้นโดยทั่วไปจะดีกว่าสำหรับการทำงาน แต่ไม่ใช่ด้วยเหตุผลที่ระบุไว้

คำตอบสำหรับโพสต์อื่นนี้อธิบายรายละเอียดเพิ่มเติมนี้

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