Javascript 如何在Angular中访问父控制器中的子控制器作用域?
我正在学习Angular JS,我有一个父控制器和子控制器: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
<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>