javascript - ng-repeat 和 "Controller as"

标签 javascript angularjs

我被这个 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 :

http://jsfiddle.net/xvdj07q9/3

关于javascript - ng-repeat 和 "Controller as",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25893711/

相关文章:

javascript - 如何延迟路口观察者 API

javascript - 如何解决 TypeError : Cannot convert undefined or null to object at Function. 键(<anonymous>)

angularjs - 如何使 Angular 装饰工变得友好?

javascript - Socket.io 在选项卡中向特定客户端发送

angularjs - UI 路由器。动态替换根状态的模板

javascript - 如何在 ng-show angular 中检查条件

javascript - 使用 API.js 进行语义 UI 搜索选择下拉菜单 - api 调用未发生

javascript - 将 SVG 文件插入 HTML

javascript - ChartJS,添加新数据集

javascript - Vue.js 组件 img src 来自 prop?