如何将属性复制到内部元素

时间:2013-10-10 17:50:54

标签: angularjs angularjs-directive

我正在为AngularJS编写一个非常简单的指令,该指令应该转换为:

<input type="text" name="FirstName" mydirectivename />

这样的事情:

<span><input type="text" name="FirstName" /></span>

很容易到达这里:

<span type="text" name="FirstName"><input/><span>

但是现在我在编写一个编译函数的杂草中做了文档说“你应该很少需要做的事情”而且我认为我偏离轨道。是否有一种简单的方法来指示模板中的特定元素应该是复制属性的目标?

由于

3 个答案:

答案 0 :(得分:0)

对于您的简单示例,您可以使用以下内容:http://plnkr.co/edit/BbwBLa?p=preview

plunker将转换原始元素并将其重新插入包装元素内。

或者,您可以按照其他答案指定要复制的所有内容,以获得更多控制权。

如果您需要复制所有属性,并且您有一个最近的角度版本(1.1.4以后,查看文档http://code.angularjs.org/1.1.4/docs/guide/directive),那么您可以尝试描述的模板函数在链接中。这些给出了所有原始元素的属性,并可以使用它们来编写具有原始属性的新模板。我不建议以这种方式使用模板功能,因为它对我的喜欢有点过于繁琐。

修改

这就是你想要的简单例子,非常简单,在链接功能中。这应该是我认为的编译,但是当我把它放在那里时,plunker会发疯。 http://plnkr.co/edit/PLfSU6?p=preview

答案 1 :(得分:-2)

尝试:

.directive("myDirective", function ($state) {
        return {
            restrict: "E",
            replace: true,
            controller: function(){},
            template: function (element, attrs) {}

答案 2 :(得分:-2)

怎么样:

.directive("mydirectivename", function ($state) {
        return {
            restrict: "A",
            replace: true,
            template: '<span ng-transclude></span>',