在子控制器中,我在父作用域上填充数组:
$scope.person.testArray = [{id: "test"},{id: "test2"}];
工作正常,person属性现在有一个名为testArray的额外属性,它包含上述值。
然后在与子控制器关联的视图中,我想显示数组的值:
<div ng-repeat="op in person.testArray">
{{op.id}}
</div>
什么都没有出现。
然而,我知道这与我使用ng-repeat这一事实有关。如果在子控制器中我在person对象上设置了常规属性,例如:
$scope.person.test = "test";
然后在我看来:
{{person.test}}
它显示字符串“test”。
我在ng-repeat上做错了什么?
答案 0 :(得分:2)
您不必在子控制器中使用$parent
,因为来自父控制器$scope
的子控制器$scope
prototypically inherits:
function ParentCtrl($scope) {
$scope.person = {};
}
function ChildCtrl($scope) {
$scope.person.testArray = [{id: "test"}, {id: "test2"}];
}
HTML:
<div ng-controller="ParentCtrl">
<div ng-controller="ChildCtrl">
<div ng-repeat="op in person.testArray">{{op.id}}</div>
</div>
</div>
答案 1 :(得分:1)
虽然我建议不要使用$ parent,但你应该可以像这样使用ng-repeat:
<div ng-repeat="op in $parent.person.testArray">
{{op.id}}
</div>