我有以下情况: 在我的父作用域中,我定义了一个名为rule的对象,其中包含一个名为“keyword”的属性。在这个关键字上,我正在设置一个观察者:
$scope.$watch("rule.keyword", function(newKeyword){...});
现在,rule.keyword由子范围找到,并由子范围更改。这可能发生在例如使用ui-select或简单的文本框。
仍然,观察者没有调用它的函数,但在父作用域中,变量具有正确的值,在子作用域中设置。
任何人都有一个想法,观察者为什么不解雇?
谢谢!
答案 0 :(得分:1)
您只能按以下方式触发父作用域中的观察者:
$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;
};
}