如果我有以下控制器:
function parent($scope, service) { $scope.a = 'foo'; $scope.save = function() { service.save({ a: $scope.a, b: $scope.b }); } } function child($scope) { $scope.b = 'bar'; }
parent读b出的正确方法是child什么?如果有必要定义b中parent,也不会使它语义上不正确假设b是描述相关的东西的属性child,而不是parent?
parent
b
child
更新: 对此进行进一步的思考,如果一个孩子有多个孩子b,将会parent在b检索上产生冲突。我的问题是,什么是访问的正确方法是b从parent?
AngularJS中的作用域使用原型继承,当在子作用域中查找属性时,解释器将从子对象开始查找原型链,并继续寻找父对象,直到找到该属性为止,而不是相反。
查看Vojta对此问题的评论https://groups.google.com/d/msg/angular/LDNz_TQQiNE/ygYrSvdI0A0J
简而言之:您不能从父范围访问子范围。
您的解决方案:
$emit
$broadcast