Ответ 1
Объект scope в AngularJS имеет специальный метод $watch
для просмотра свойств области.
Он принимает обратный вызов, который получает новое и старое значение модели:
$scope.$watch('modelName', function(newValue, oldValue){
// Do anything you like here
});
Обратный вызов выполняется при инициализации и каждый раз, когда модель изменяется. Поэтому может быть полезно добавить дополнительную проверку равенства:
$scope.$watch('modelName', function(newValue, oldValue){
// Check if value has changes
if(newValue === oldValue){
return;
}
// Do anything you like here
});
Это позволяет вам "смотреть" вашу модель и выполнять некоторые действия, если это необходимо.
Еще одно замечание: если вы смотрите модель, содержащую объект, вы должны использовать дополнительный третий параметр, который сообщает AngularJS сравнивать оба значения по отношению к объекту, а не по ссылке (поскольку эта ссылка не будет меняться и, следовательно, не будет вызвать наблюдателя) следующим образом:
$scope.$watch('modelName', function(newValue, oldValue){
// Do anything you like here
}, true); // Add extra 'true' parameter to check for object equality
Вы можете прочитать дополнительную документацию на странице AngularJS scope.
Надеюсь, что это поможет!