Блог веб-разработчика v 1.0.0
Symfony2, AngularJS, React, Gulp, PhpStorm и много других страшных слов

Пара вещей об AngularJS которые вы не знали

9 лет назад
7667 просмотров
AngularJS JavaScript Полезности

Отписаться от событий в $scope

Наверняка вы не раз использовали метод $on() у $scope или $rootScope. Да, этот тот самый метод для добавления обработчика событий. Но, как вы можете видеть, метода $off() не существует. Однако удалить обработчик события иногда бывает необходимо и, конечно, это возможно.

Жестко обнулить массив в $$listeners, например так:

$scope.$on('someEvent', function() { ... }); // Обработчик добавлен
$scope.$$listeners.someEvent = []; // Обработчик удален

Это не совсем официальный способ, но он проверен и отлично работает. Однако, не удобно будет удалять какой-то конкретный обработчик с целью оставить остальные (если их много). На этот случай есть другой, малоизвестный (и малологичный способ):

var stopFunction = $scope.$on('someEvent', function() { ... }); // Обработчик добавлен
stopFunction(); // Обработчик удален

Дело в том, что метод $on() возвращает функцию для удаления обработчика. Об этом мало кто знает, но это довольно полезная фича. Кстати, метод $watch() работает точно так же.

Привязка через ng-model для hidden поля

Если вы пробовали привязывать значение в hidden поле, то заметили, что это не работает. Это связано с тем, что ngModel подразумевает двустороннюю привязку, но в hidden поле не может быть таковой. Это ограничение обходится довольно просто:

<input type="hidden" value="{‌{ value }}" />

$watch для нескольких переменных

Начиная с версии 1.3 AngularJS имеет метод $watchGroup() у $scope. Он позволяет "следить" сразу за несколькими переменными в одном обработчике

$scope.foo = 'foo';
$scope.bar = 'bar';

$scope.$watchGroup(['foo', 'bar'], function(newValues, oldValues, scope) {
  // newValues[0] -> $scope.foo 
  // newValues[1] -> $scope.bar 
});

AngularJS или React

Думаю, вам интересно будет почитать сравнение AngularJS и React.

Что еще почитать
От AngularJS к React
9 лет назад
14577 просмотров
Краткий обзор фич, которые сподвигли меня использовать React в качестве JS фреймворка.