9

我正在为 AngularJS 编写一个非常简单的指令,它应该可以转换如下内容:

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

变成这样:

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

到达这里很容易:

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

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

谢谢

4

3 回答 3

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

于 2013-10-11T00:21:27.983 回答
-2

关于什么 :

.directive("mydirectivename", function ($state) {
        return {
            restrict: "A",
            replace: true,
            template: '<span ng-transclude></span>',
于 2015-09-09T16:10:08.903 回答
-2

尝试:

.directive("myDirective", function ($state) {
        return {
            restrict: "E",
            replace: true,
            controller: function(){},
            template: function (element, attrs) {}
于 2015-09-01T19:41:00.240 回答