1

我正在尝试在 ng-repeat 循环中使用自定义指令。如果没有我的自定义指令,循环可以正常工作:显示所有项目。但是,如果我在 ng-repeat 上使用我的指令,那么循环中的所有项目似乎都未定义或为空,至少没有打印出来。

这是一个简化的示例:

http://jsfiddle.net/vtH64/13/

angular.module('myTest', []).directive('makecool', function(){
    return {
        scope: {
            'flippity': '&'
        },
        link: function(scope, element){
            element.append(", Yo!");
            // do something with flippity
        }
    };
});

angular.module('myApp',['myTest']).controller('ListStuff', function($scope){
    $scope.list = ["hi","there","this","be","a","list"];
});

它似乎与孤立的范围有关,因为没有

scope: {
            'flippity': '&'
        },

它隔离了它工作正常的范围(http://jsfiddle.net/vtH64/15/),尽管我将无法访问我在现实世界应用程序中需要的“flippity”。

我在这里做错了什么?

4

2 回答 2

0

如果您包含隔离范围,请尝试使用 $parent...

 <li ng-repeat="item in list" flippity="flop" makeCool>{{$parent.item}}</li>
于 2013-10-10T06:24:25.150 回答
0

link方法获取元素的属性作为第三个参数:

 link: function(scope, element , attributes){

因此,您可以通过flippity一种非常简单的方式获得:attrs["flippity"]

工作小提琴:http: //jsfiddle.net/vtH64/17/

于 2013-10-10T06:35:28.540 回答