AngularJS:修改指令中的transcluded属性键

时间:2013-11-19 18:42:36

标签: javascript angularjs replace directive transclusion

假设:

<radio radio-name="login"></radio>

指令:

app.directive('radio', function () {
    return {
        restrict: 'E',
        replace: true,
        transclude: true,
        scope: {
            radioName: '@'
        },
        template: '<label></label>',
        link: function ( ... ) {}
    }
});

我希望得到的标记为:

<label data-radio-name="login" ...>

而不是当前输出的内容:

<label radio-name="login" ...>

我想在初始标记上保留'radio-name',这样你就可以告诉它是一个自定义指令,但我希望得到的transcluded / replacement包含语义数据属性'data-radio-name'。感谢。

1 个答案:

答案 0 :(得分:1)

radioName模式从@更改为=并将模板设置为空:

template: '<label data-radio-name=""></label>'

类似的东西:

.directive('radio', function () {
    return {
        restrict: 'E',
        replace: true,
        transclude: true,
        scope: {
            radioName: '='
        },
        template: '<label data-radio-name=""></label>',
        link: function ( ) {}
    }
});

输出:

<label data-radio-name="login"></label>

演示 Fiddle