вы неправильно поняли концепцию $watch
, я объясню:
Прежде всего, AngularJS определяет концепцию так называемого дайджеста.
цикл. Этот цикл можно рассматривать как цикл, во время которого AngularJS
проверяет, есть ли какие-либо изменения во всех переменных, наблюдаемых всеми
$ областей. Так что, если у вас есть $ scope.myVar, определенный в вашем контроллере
и эта переменная была помечена для просмотра, то вы
неявно приказывая AngularJS отслеживать изменения в myVar в каждом
итерация цикла.
Естественным последующим вопросом будет: все ли прикреплено к
$ сфера, за которой следят? К счастью, нет. Если бы вы следили за изменениями
к каждому объекту в вашей области видимости $, тогда бы цикл дайджеста
возраст, чтобы оценить, и вы быстро столкнетесь с проблемами производительности.
Вот почему команда AngularJS дала нам два способа объявить некоторые
Переменная $ scope отслеживается (читайте ниже).
$ watch помогает прослушивать изменения в области $
Существует два способа объявления переменной $ scope как наблюдаемой
Значение $ watch не скажет вам, является ли переменная пустой, а скорее, если переменная изменилась.
например:
unction MyController($scope) {
$scope.myVar = 1;
$scope.$watch('myVar', function() {
alert('hey, myVar has changed!');
});
$scope.buttonClicked = function() {
$scope.myVar = 2; // This will trigger $watch expression to kick in
};
}
если вы хотите проверить, существует ли переменная, создайте функцию:
$scope.isNullOrEmptyOrUndefined = function (value) {
return !value;
}
и затем проверьте это следующим образом (например):
if($scope.isNullOrEmptyOrUndefined(product_files) {
//your logic
}