AngularJS: $ watch не вызывается при изменении в дочерней области - PullRequest
0 голосов
/ 07 мая 2018

У меня следующая ситуация: В родительской области я определяю объект с именем rule с атрибутом под названием «ключевое слово». По этому ключевому слову я устанавливаю наблюдателя:

$scope.$watch("rule.keyword", function(newKeyword){...});

Теперь rule.keyword обнаруживается дочерней областью и изменяется дочерней областью. Это может случиться, например, с помощью пользовательского интерфейса или простого текстового поля.

Тем не менее, наблюдатель не вызывает свою функцию, но в родительской области переменная имеет правильное значение, установленное в дочерней области.

У кого-нибудь есть идея, почему наблюдатель не стреляет?

Спасибо!

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете вызвать наблюдателя в родительской области только следующим образом:

$scope.$parent.$watch('property', function(value){...});

Однако, если вы хотите, чтобы наблюдатель запускался в обеих областях, вам нужно сделать переменную $ scope для ссылки на один и тот же объект, обновив его значение в родительской и дочерней областях.

function ParentCtrl($scope) {
  $scope.rule = {ruleValue: val};
}

function ChildCtrl($scope) {
  $scope.update = function(ruleValue) {
    $scope.rule.keyword = ruleValue;
  };
}
...