Angular 1.3.0 (superluminal-nudge)

Po 8 miesiącach pracy około 400 osób, ponad 2000 zmianach, prawie 20 wersjach testowych i 6 wersjach RC, światło dzienne ujrzała nowa wersja frameworka AngularJS, oznaczona numerem 1.3.0Superluminal-nudge – bo tak nazwane zostało stabilne wydanie, przynosi nam ponad 400 poprawek, lepszą dokumentację oraz kilka nowości, o których za chwilę.

Jedną z najważniejszych informacji jest fakt, że nowa wersja AngularJS nie wspiera już przeglądarki Internet Explorer 8. Pozwoliło to twórcom na implementację funkcjonalności oraz wprowadzenie usprawnień, które w przeciwnym przypadku nie byłyby możliwe. Osoby, które w swoich projektach dalej wspierać będą IE8 zmuszone są tym samym do korzystania ze stabilnej gałęzi 1.2.x.

Wydanie 1.3.0, to przede wszystkim nowości:

  • one-time binding – poprzez użycie prefixu “::” przed wyrażeniem, które interpolujemy po stronie HTML, jesteśmy w stanie wyeliminować nadmierną ilość $watch, które powodują, że obserwowane są zmiany modelu. Wyrażenie bindowane jest tylko raz, w momencie rozwiązania wartości, po czym $watch zostaje usunięty. Tym samym wartości, które się nie zmieniają, a powinny zostać tylko wyświetlone, nie są już “odwiedzane” w pętli $digest, co przekłada się oczywiście na wydajność. Osoby, które do tej pory korzystały z dodatkowych bibliotek, takich jak: bindonce lub angular-once, będą mogły używać natywnej implementacji frameworka.
  • ngAria – czyli implementacja ARIA (Accessible Rich Internet Applications) – pozwalająca na przekazanie kontroli nad aplikacją klawiaturze i czytnikom tekstu, które tym samym umożliwiają pracę ludziom ze ślepotą i upośledzeniem wzroku.
  • ngMessages – nowa dyrektywa, która pozwala na interakcję z formularzami i ułatwia przekazywanie informacji do użytkownika o stanie poprawności wypełnianych danych
  • ngModelOptions – kolejna dyrektywa, która integruje się z formularzami i pozwala definiować oraz obsługiwać zdarzenia, które mają być realizowane w ramach podejmowanych akcji przez użytkownika. Dzięki niej jesteśmy w stanie zdefiniować choćby to, w jaki sposób aktualizowany jest model danych, który zdefiniowany został dla elementów formularza. Przykładowo: jesteśmy w stanie zdefiniować zdarzenie, które w momencie zdarzenie blur na elemencie input wyczyści jego wartość, gdy reguły walidacji nie zostaną spełnione, a tym samym nasz model danych pozostanie niezmieniony.
  • Strict DI – walidator, który w momencie jego włączenia w konfiguracji angular.bootstrap, pokaże nam miejsca, w których nie użyto adnotacji zależności, które pozwalają nam w pełni poprawnie zminimalizować kod.

Poza głównymi zmianami, pojawiło się także sporo nowości w module ngAnimate, oraz ngModel.

Pełna lista zmian dostępna jest w CHANGELOG projektu, a osoby zainteresowane migracją z wersji 1.2.x do 1.3.x mogą skorzystać z dokumentu opisującego tak zwane BREAKING CHANGES.