AngularJS: $watch 在子作用域中发生变化时未被调用
AngularJS: $watch not called when changed in child scope
我遇到以下情况:
在我的父作用域中,我定义了一个名为 rule 的对象,它具有一个名为 "keyword" 的属性。在这个关键字上,我设置了一个观察者:
$scope.$watch("rule.keyword", function(newKeyword){...});
现在,rule.keyword 被子作用域找到并被子作用域更改。这可能发生,例如使用 ui-select 或简单的文本框。
仍然,观察者没有调用它的函数,但是在父作用域中,变量具有正确的值,在子作用域中设置。
有人知道为什么观察者不开火吗?
谢谢!
您只能在父范围内触发观察者,如下所示:
$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;
};
}
我遇到以下情况: 在我的父作用域中,我定义了一个名为 rule 的对象,它具有一个名为 "keyword" 的属性。在这个关键字上,我设置了一个观察者:
$scope.$watch("rule.keyword", function(newKeyword){...});
现在,rule.keyword 被子作用域找到并被子作用域更改。这可能发生,例如使用 ui-select 或简单的文本框。
仍然,观察者没有调用它的函数,但是在父作用域中,变量具有正确的值,在子作用域中设置。
有人知道为什么观察者不开火吗?
谢谢!
您只能在父范围内触发观察者,如下所示:
$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;
};
}