0

我试图在指令中重复一个指令,这样我就可以在每个指令上都有一个模板,但问题是我只能在使用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>'
    }
});

我只得到鼠标

我准备了一个小提琴来看看它的实际效果 点击这里

请提供任何帮助。

先感谢您

4

1 回答 1

1

你弄乱了你的指令<test-data>标签。你还没有关闭test-data. test-data您为 as 之类的元素提供了自我结束标签<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>

工作小提琴

于 2015-01-18T18:52:23.110 回答