ทัศนวิสัย:
ในขณะที่เชิงมุมของคุณกำลัง bootstrapping ผู้ใช้อาจเห็นวงเล็บที่คุณวางไว้ใน html ng-cloak
นี้สามารถจัดการกับ ng-bind
แต่สำหรับผมนี่เป็นวิธีแก้ปัญหาที่ฉันไม่จำเป็นต้องใช้ถ้าผมใช้
ประสิทธิภาพ:
{{}}
คือช้ามาก
นี่ng-bind
เป็นคำสั่งและจะวาง watcher บนตัวแปรที่ส่งผ่าน ดังนั้นค่าng-bind
จะถูกใช้เมื่อค่าที่ส่งผ่านเปลี่ยนไปจริงๆ
ในทางกลับกันวงเล็บจะสกปรกตรวจสอบและรีเฟรชทุกครั้ง $digest
แม้ว่าจะไม่จำเป็นก็ตาม
ขณะนี้ฉันกำลังสร้างแอปหน้าเว็บขนาดใหญ่ (ประมาณ 500 ครั้งต่อการดู) การเปลี่ยนจาก {{}} เป็นเข้มงวดng-bind
ช่วยให้เราประหยัดได้ถึง 20% ในทุกscope.$digest
ๆ
คำแนะนำ :
หากคุณใช้โมดูลการแปลเช่นangular-translateเสมอชอบคำสั่งก่อนที่จะใส่คำอธิบายประกอบวงเล็บ
{{'WELCOME'|translate}}
=> <span ng-translate="WELCOME"></span>
หากคุณต้องการฟังก์ชั่นตัวกรองให้ใช้คำสั่งที่ดีกว่าซึ่งใช้ตัวกรองที่คุณกำหนดเอง เอกสารประกอบสำหรับบริการตัวกรอง $
อัปเดต 28.11.2014 (แต่อาจอยู่นอกหัวข้อ):
ใน Angular 1.3x มีbindonce
การแนะนำการใช้งาน ดังนั้นคุณสามารถผูกค่าของนิพจน์ / แอตทริบิวต์หนึ่งครั้ง (จะถูกผูกไว้เมื่อ! = 'undefined')
สิ่งนี้มีประโยชน์เมื่อคุณไม่คาดหวังว่าคุณจะผูกพันการเปลี่ยนแปลง
สถานที่::
ก่อนที่จะผูกพันของคุณ:
<ul>
<li ng-repeat="item in ::items">{{item}}</li>
</ul>
<a-directive name="::item">
<span data-ng-bind="::value"></span>
ตัวอย่าง:
ng-repeat
เพื่อส่งออกข้อมูลบางส่วนในตารางที่มีการผูกหลายต่อแถว การแปล - การเชื่อมโยง, กรองผลลัพธ์ที่ได้รับการดำเนินการในทุกขอบเขตการย่อย
ngBind
แทน{{ expression }}
ถ้าเทมเพลตปรากฏขึ้นชั่วขณะโดยเบราว์เซอร์ในสถานะดิบก่อนที่ Angular จะรวบรวมมันเนื่องจากngBind
เป็นองค์ประกอบขององค์ประกอบจึงทำให้มองไม่เห็นการเชื่อมโยงกับผู้ใช้ในขณะที่หน้ากำลังโหลด" - แต่ไม่มีการพูดถึงเกี่ยวกับประสิทธิภาพ