Qual è la differenza tra:
{{::office.name}}
e
{{office.name}}
in angularJS?
Risposte:
Un'espressione che inizia con
::
è considerata un'espressione occasionale. Le espressioni occasionali interromperanno il ricalcolo una volta che sono stabili, cosa che accade dopo il primo digest se il risultato dell'espressione è un valore non indefinito (vedere l'algoritmo di stabilizzazione del valore di seguito).
In molte situazioni, i valori devono essere mostrati solo nella vista e non verranno mai aggiornati dalla vista o dal controller. Tuttavia, se viene utilizzata l'associazione a due vie, $digest
verificherà eventuali modifiche nell'espressione in ogni ciclo, il che non è necessario. In questi casi, ::
dovrebbe essere usato prima dell'espressione. Come affermato nella dichiarazione precedente, questa è più efficiente della sintassi di associazione a due vie per questi casi.
Blog: sintassi di associazione una tantum di AngularJS da @Todd Motto
In poche parole, quando dichiariamo un valore come
{{ ::foo }}
all'interno del DOM, una volta definito questo valore, Angular lo renderà, svincolerà dagli watcher e quindi ridurrà il volume dei binding all'interno del$digest
loop. Semplice!