Mowa tutaj o wiązaniach pomiędzy widokiem a modelem – czyli jak zmiany w widoku wpływają na model i odwrotnie (jak zmiany w modelu wpływają na widok). I gdzie można dokonać optymalizacji.
One-way data binding
Jest to sytuacja, w której dane płyną z modelu do widoku – każda ich zmiana w modelu powoduje aktualizację widoku. Zmiany na widoku nie mają wpływu na model.
One-way data binding jest realizowany poprzez użycie dyrektywy ng-bind. Jak wskazuje także dokumentacja one-way data binding w prostej formie można zrealizować za pomocą wyrażenia w podwójnych nawiasach klamrowych – {{expression}} .
Two-way data binding
Jest to sytuacja, w której dane z widoku są powiązane z danymi modelu jak i dane z modelu powiązane są z danymi widoku. Mówiąc prościej – jeśli zmienimy coś na widoku, to automatycznie zmiana dotrze do modelu i tak samo jeśli zmienimy coś w modelu to automatycznie ta zmiana zostanie odzwierciedlona na widoku.
Two-way data binding jest realizowany poprzez użycie dyrektywy ng-model.
One-time data binding
Jest to wariacja one-way data bindingu – zmiany są propagowane z modelu do widoku. Ale w tym wypadku zastosowana jest dodatkowa optymalizacja – wartość jest ładowana tylko raz (następne zmiany w modelu nie będą propagowane do widoku). Dzięki takiemu rozwiązaniu watcher jest automatycznie usuwany po ustaleniu wartości (zmianie wartości modelu na wartość różną od null i undefined), co ma duże znaczenie jeśli chodzi o zwiększenie wydajności.
One-time data binding jest realizowany za pomocą podwójnego dwukropka: {{::expression}}