angularjs:ng-repeat不与父范围属性一起使用

时间:2013-05-23 15:39:58

标签: angularjs angularjs-ng-repeat

在子控制器中,我在父作用域上填充数组:

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

2 个答案:

答案 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>

fiddle

答案 1 :(得分:1)

虽然我建议不要使用$ parent,但你应该可以像这样使用ng-repeat:

<div ng-repeat="op in $parent.person.testArray">
  {{op.id}}
</div>