2016-05-14 42 views
2

试图以相同的名称访问ng-repeat中的控制器变量。 例如AngularJs - 用同名的ng-repeat访问范围变量

控制器

$scope.items = [1,2,3,4,5]; 

$scope.a = { 
    data: "Some Data" 
}; 

查看

<div ng-repeat="a in items"> {{ a }} - {{ $parent.a.data }} </div> 

,但它无法正常工作。是否有可能访问该变量(对象)内ng - 重复相同的名称?

回答

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 
}); 

最后,纳米ng控制器是一个很好的做法。

希望它有帮助!

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?