Javascript 如何在Angular中访问父控制器中的子控制器作用域?

Javascript 如何在Angular中访问父控制器中的子控制器作用域?,javascript,angularjs,controller,scope,Javascript,Angularjs,Controller,Scope,我正在学习Angular JS,我有一个父控制器和子控制器: <div ng-controller="MainCtrl"> <p>Good {{question}}</p> <div ng-controller="ChildCtrl"> <p>Good {{answer}}!</p> </div> Bind the Child Controller's scop

我正在学习Angular JS,我有一个父控制器和子控制器:

<div ng-controller="MainCtrl">
    <p>Good {{question}}</p>

    <div ng-controller="ChildCtrl">
        <p>Good {{answer}}!</p>
    </div>

    Bind the Child Controller's scope and show here: {{ answer}}
<div>

如何在子控制器外部和父控制器内部显示
{{answer}

使用发布/订阅模式:

function MainCtrl($scope) {
  $scope.question = 'question'
  $scope.$on('response', function (evnt, data) {
    $scope.answer = data;
  });
}

function ChildCtrl($scope) {
  $scope.$emit('response', 'demo');
}

.

您还可以使用范围原型继承

在AngularJS中,子作用域通常从其父作用域原型继承。但是
答案
是一个基本类型(不是对象类型)。因此,我们应该将文本数据放在对象中,以确保原型继承发挥作用。
(更多信息请点击此处:)

控制器:

function MainCtrl($scope) {
  $scope.question = 'question';
  $scope.answer = {};
}
function ChildCtrl($scope) {
  $scope.answer.text = 'demo'; 
}
视图:


好{{问题}

很好{{回答.文本}

绑定子控制器的作用域并在此处显示:{{answer.text}
谢谢Minko。我看了演示。如果父控制器中的
{{answer}}
与子控制器中的a
{{answer}
绑定,那么父控制器中的
{answer}}
是否应该显示
demo
。现在应该修好了。只是一个小问题。
$scope.$on('response',function(evnt,data)
中的
evnt
是否必须是
event
,或者它不重要,可以容纳任何字符串。(如果这听起来很愚蠢,请抱歉)@Neel,这没关系,你可以使用任何字符串,有时我们使用“e”,这非常简单!我发现这种方法比
$emit
$on
更好。谢谢heaps@IvanZh
function MainCtrl($scope) {
  $scope.question = 'question';
  $scope.answer = {};
}
function ChildCtrl($scope) {
  $scope.answer.text = 'demo'; 
}
<div ng-controller="MainCtrl">
  <p>Good {{question}}</p>
  <div ng-controller="ChildCtrl">
    <p>Good {{answer.text}}!</p>
  </div>
  Bind the Child Controller's scope and show here: {{ answer.text}}
<div>