转换为ng-repeat

时间:2015-01-18 18:25:50

标签: javascript angularjs angularjs-directive angularjs-ng-repeat angularjs-ng-transclude

我试图在指令中重复一个指令,所以我可以在每个指令上有一个模板,但问题是我只能在使用 ng-transclude 时显示第一个条目

这是我到目前为止所做的事情

<div ng-app="TestApp">
    <div ng-controller="TestCtrl">
        <test-collector>
            <test-data xx-value="Mouse" xx-href="https://fb.com" />
            <test-data xx-value="Keyboard" xx-href="https://goo.gl" />
        </test-collector>        
    </div>
</div>

和控制器

var app = angular.module('TestApp', []);

app.controller('TestCtrl', ['$scope', function($scope){

}]);

app.directive("testCollector", function () {
    return {
        restrict: "E",
        scope: {},
        transclude: true,  
        replace: true,
        controller: function($scope) {

        },
        template: '<div>' +
                        '<div ng-transclude></div>' +
                   '</div>'
    }
});

app.directive("testData", function(){
    return {
        restrict: "E",
        require: '^testCollector',
        transclude: true,
        replace: true,
        scope: {
            xxValue: '@',
            xxHref: "@"
        },
        template: '<a href="{{xxHref}}">{{xxValue}}</a>'
    }
});

我只能鼠标

我准备了一个小提琴,看它在行动中CLICK HERE

请帮助。

提前谢谢

1 个答案:

答案 0 :(得分:1)

您正在弄乱指令<test-data>标记。您尚未关闭test-data。您为test-data元素提供了自我结束标记,如<test-data />

<强> HTML

<div ng-app="TestApp">
    <div ng-controller="TestCtrl">
        <test-collector>
            <test-data xx-value="Mouse" xx-href="https://fb.com"></test-data>
            <test-data xx-value="Keyboard" xx-href="https://goo.gl"></test-data>
        </test-collector>        
    </div>
</div>

Working Fiddle