我被这个 fiddle 中的例子难住了。我在具有 ng-repeat 的元素上设置一个 Controller ,以便为每个项目创建一个新的 Controller 实例。由于 ng-repeat 为每个项目创建了一个新范围,因此 Controller 应该接管新创建的范围,这样对于 ng-repeat="item in items"
,item
变为 Controller 上的 $scope.item
。如果我通过注入(inject) $scope 使用常规 Controller 约定,则效果很好,如示例所示。然而,我认为的“Controller as”类似语法不起作用,例如如果我定义 ng-controller="FirstCtrl as first"
,那么对于 ng-repeat="item in items"
,item
是 不能作为this.item
使用。这是为什么?
最佳答案
您可以使用 ng-init 使范围项可供 Controller 使用:
HTML:
<div ng-repeat="item in items"
ng-controller="ItemController as ctrl"
ng-init="ctrl.init( item )">
...
</div>
Controller :
.controller('ItemController,[
function(){
this.init = function(item){
this.item = item;
}
}
])
更新的 fiddle :
关于javascript - ng-repeat 和 "Controller as",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25893711/