AngularJS memiliki fitur baru sejak versi 1.3.0-beta.10: "pengikatan satu kali malas" .
Ekspresi sederhana dapat diawali dengan ::
, memberi tahu angular untuk berhenti menonton setelah ekspresi dievaluasi pertama kali. Contoh umum yang diberikan adalah seperti:
<div>{{::user.name}}</div>
Apakah ada sintaks yang serupa untuk ekspresi seperti berikut ini?
<div ng-if="user.isSomething && user.isSomethingElse"></div>
<div ng-class="{classNameFoo: user.isSomething}"></div>
javascript
angularjs
binding
lazy-evaluation
seldary
sumber
sumber
Jawaban:
Iya. Anda dapat mengawali setiap ekspresi dengan
::
, bahkan yang di dalamngIf
ataungClass
:Sebenarnya, kodenya hanya memeriksa bahwa dua karakter pertama dalam ekspresi adalah
:
untuk mengaktifkan pengikatan satu kali (dan kemudian menghapusnya, sehingga tanda kurung bahkan tidak diperlukan). Yang lainnya tetap sama.sumber
<div ng-if="::user.isSomething"></div>
dan<div ng-if="::(!user.isSomething)"></div>
keduanya dirender. Ia bekerja tanpa "::".::
bekerja dengan baik untuk saya, seperti yang dijelaskan dalam pengeditan saya. Bisakah Anda membuat biola, jika ragu?::
. Ini berfungsi dengan baik untuk ng-class, tetapi ng-if tampaknya tidak mematuhi satu kali pengikatan untuk saya (1.5.6). Perhatikan bahwa saya mencoba mengikat satu arah properti objek yang berasal dari ng-repeat. Tidak yakin apakah itu membuat perbedaan.