【发布时间】:2015-07-14 09:52:31
【问题描述】:
我在 Angular 中使用父/子控制器继承,遇到了一些我不理解的行为。
基本上,我在父控制器中为对象设置属性,并在子控制器中将其设置为不同的值。我输出在父控制器中设置的值之前子控制器中的代码应该运行。但是,我看到子控制器代码已经运行并设置了值。
Parent.Controller.js
testapp.controller('ParentController', function($scope) {
$scope.init = function() {
$scope.myValue = 'Primitive value, defined in ParentController';
$scope.myObject = {
value: "Object property value, defined in ParentController"
}
}
$scope.init();
});
Child.Controller.js
testapp.controller('ChildController', function($scope) {
$scope.init = function() {
$scope.myValue = 'Primitive value, set in ChildController';
$scope.myObject.value = "Object property value, set in ChildController";
}
$scope.init();
});
HTML 模板
<div ng-controller="ParentController" class="outer">
1. Primitive value on scope: <span style="font-weight:bold">{{myValue}}</span>
<br/>2. Object value on scope: <span style="font-weight:bold">{{myObject.value}}</span>
<p>
<div ng-controller="ChildController" class="inner">
3. Primitive value on scope: <span style="font-weight:bold">{{myValue}}</span>
<br/>4. Object value on scope: <span style="font-weight:bold">{{myObject.value}}</span>
</div>
<p>
5. Primitive value on scope: <span style="font-weight:bold">{{myValue}}</span>
<br/>6. Object value on scope: <span style="font-weight:bold">{{myObject.value}}</span>
</div>
我本来希望 #2 显示由父控制器定义的对象的值,因为子控制器应该还没有执行(子控制器的 ng-controller 指令在此以南几行) .
这是Plunk
如果有人能帮助我理解这种行为,我将不胜感激。
谢谢,
菲利普
【问题讨论】:
标签: javascript angularjs inheritance