ng-repeat中的自定义指令与隔离范围:循环项突然为空

时间:2013-10-10 06:09:26

标签: angularjs

我正在尝试在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”,这是我在现实世界的应用程序中所需要的。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

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

 <li ng-repeat="item in list" flippity="flop" makeCool>{{$parent.item}}</li>

答案 1 :(得分:0)

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

 link: function(scope, element , attributes){

因此,您可以非常轻松地获取flippityattrs["flippity"]

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