尝试以相同名称访问ng-repeat中的控制器变量。 e.g。
控制器
$scope.items = [1,2,3,4,5];
$scope.a = {
data: "Some Data"
};
查看
<div ng-repeat="a in items"> {{ a }} - {{ $parent.a.data }} </div>
但它不起作用。是否可以访问具有相同名称的ng-repeat内的变量(Object)?
答案 0 :(得分:3)
实现目标的一种方法是通过命名控制器来访问变量(例如here in doc)。
您可以将控制器命名为ng-controller="TestCtrl as ctrl"
然后,您需要在视图中进行一些更改:
<div ng-repeat="a in ctrl.items"> {{ a }} - {{ ctrl.a.data }} </div>
在您的控制器:
中app.controller('TestCtrl', function($scope) {
var self = this;
self.items = [1,2,3,4,5]; //brackets here, not curly brackets as said by @georgeawg
self.a = {
data: "Some Data"
};
// Rest of you code
});
最后,命名控制器是一个很好的做法。
希望它有所帮助!
答案 1 :(得分:1)
如果您希望$scope.items
成为数组,请使用方括号,而不是大括号。
//Do THIS
$scope.items = [1,2,3,4,5];
//NOT THIS
$scope.items = {1,2,3,4,5};
您的ng-repeat
迭代器可以是任何东西。不需要重载父作用域变量。
<div ng-repeat="anything in items"> {{ anything }} - {{ a.data }} </div>
此外,如果父变量未重载,则无需使用$parent
。
ng-repeat
重复的元素中的变量原型继承自父作用域。有关详细信息,请参阅What are the nuances of scope prototypal / prototypical inheritance in AngularJS?