1

我想在 Angular.js 中创建新元素

<link url="http://google.com">google</link>

那将被转换为<a>标签,我该怎么做?

到目前为止的代码:

var app = angular.module('app', []);
app.directive('link', function() {
    return {
        restrict: 'E',
        transclude: true,
        replace: true,
        scope: false,
        template: '<a href="" ng-transclude></a>';
    }
});

但它在链接后呈现谷歌,我不知道如何获取网址。

4

1 回答 1

4

您可以在链接功能中获取它。您的指令如下所示:

app.directive('link', function() {
    return {
        restrict: 'E',
        transclude: true,
        replace: true,
        scope: false,
        template: '<a href="{{url}}" ng-transclude></a>',
        link: function(scope, element, attrs) {
            scope.url = attrs.url;
        }
    }
});

如果你可以为你的指令创建一个独立的范围,你也可以这样做:

app.directive('link', function() {
    return {
        restrict: 'E',
        transclude: true,
        replace: true,
        scope: {
            url: '@'
        },
        template: '<a href="{{url}}" ng-transclude></a>'
    }
});

然后 url 属性将自动放入指令的范围内。

于 2013-08-15T14:50:40.407 回答