2014-10-12 93 views
1

我只是想做一个指令来包装一个元素。我已经试过这一个:包装指令和类复制

.directive('wrap', function() { 
    return { 
    restrict: 'A', 
    replace: true, 
    transclude: 'element', 
    template: '<div class="wrapper" ng-transclude></div>' 
    }; 
}); 

但是当我使用它:

<a class="my-class" wrap>Hello</a> 

我越来越my-class复制:

<div class="my-class wrapper" ng-transclude="" wrap=""> 
    <a class="my-class ng-scope" wrap="">Hello</a> 
</div> 

我要的就是这样,但没有my-class in the wrapper div:

<div class="wrapper" ng-transclude="" wrap=""> 
    <a class="my-class ng-scope" wrap="">Hello</a> 
</div> 

可能吗?

回答

1

您CA与tranclude做到这一点:真:

app.directive('wrap', function() { 
    return { 
    restrict: 'A', 
    replace: true, 
    transclude: true, 
    template: '<div class="wrapper" ng-transclude></div>' 
    }; 
}); 

HTML:

<div wrap><a class="my-class">Hello</a></div> 

或者(如果你使用限制: 'E'):

<wrap><a class="my-class">Hello</a></wrap> 

输出:

<div class="wrapper" ng-transclude="" wrap=""> 
    <a class="my-class ng-scope">Hello</a> 
</div> 

http://plnkr.co/edit/Bxeeo4lytcicoXE65MU9?p=preview

+0

谢谢,这实际上是我用它来工作的方式。我只是很好奇没有明确地“包装”它而得到类似'Hello'的结果。 – IsidroGH 2014-10-12 09:07:43