0

在子控制器中,我在父范围内填充了一个数组:

$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 做错了什么?

4

2 回答 2

2

您不必$parent在子控制器中使用,因为子控制器的$scope 原型通常继承自父控制器的$scope

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>

fiddle

于 2013-05-23T16:02:31.187 回答
1

虽然像我建议不要使用 $parent 的其他人一样,您应该能够像这样使用 ng-repeat:

<div ng-repeat="op in $parent.person.testArray">
  {{op.id}}
</div>
于 2013-05-23T16:45:41.750 回答