/ / Angularjs 1.3+ Binding dati One- o Double Way - javascript, angularjs

Angularjs 1.3+ Binding dati One- o Double Way - javascript, angularjs

Sono nuovo ad Angular e non è chiaro dove sia necessario il doppio binding dei dati tranne che nel classico scenario del modello ng in cui il valore del modello si riflette nella vista.

Ho bisogno di un doppio legame per le variabili ng-repeat, ad esempio? O ne ho bisogno per variabili che possono essere cambiate in $ watch?

Ho letto che l'associazione dati unidirezionale può avere significativi miglioramenti delle prestazioni, quindi non voglio utilizzare il doppio binding dati a meno che non ne abbia davvero bisogno

Per esempio

 <img ng-src="/images/{{mySrc}}"> or
<img ng-src="{{::mySrc}}">

<div ng-repeat="item in items"> or
<div ng-repeat="::item in ::items"> where items retrieved from $http

risposte:

3 per risposta № 1

Il binding dei dati a 2 vie si riferisce direttamente al ng-model direttiva, il suo significato è che è possibile modificare un valore del modello nella vista (tramite un input ng-model) e cambiarlo anche programmaticamente, o il cambiamento verrà replicato all'altro e nella vista.

ng-repeat è semplicemente un'espressione che viene valutata quando inizia un ciclo di digest, quindi non si tratta di un bind di dati a 2 vie.

In termini di performance, il processo di binding degli angolari utilizza un controllo sporco e non è l'ideale, utilizzando un ng-model o non farà nessuna differenza per questo. Il ciclo di digest inizierà solo se il valore del modello cambia o se cambi il valore di un modello nel contesto di angli.


Dopo aver visto lo snippet di codice hai fornito il {{::model}} la notazione creerà semplicemente un legame una tantum, questo significa che il valore non cambierà mai nella tua visualizzazione e non sarà guardato.

Il diverso è {{value}} viene guardato, quando cambia questo binding viene aggiornato, questo è lento sulle prestazioni a causa di controllo sporco tuttavia nel tuo esempio il valore non è visto, non è mai controllato e se usato in un'istruzione condizionale viene valutato solo una volta.

Dipende da te se vuoi usare entrambi, se un valore non cambierà mai, usa {{::}} con rapidità, se i valori che cambieranno in futuro verranno utilizzati {{}}


0 per risposta № 2

L'uso del doppio legame è utile solo se il tuo modelloè soggetto a cambiamenti costanti. Nel caso in cui il modello sia una costante e non necessiti di frequenti cambiamenti rispetto a quella singola sarebbe efficace. Se si utilizzano troppi rilegature doppie anche laddove non è necessario, potrebbero verificarsi gravi sovraccarichi in AngularJS e possono impantanarsi nel tuo sito. Questo perché ogni doppio legame è monitorato via orologio da angolare.