9

所以我正在关注这个关于自定义组件的 EggHead.io 教程,我遇到了这个问题。声明指令时,例如:

angular.module('myApp', [])
    .directive('myDir', function(){
        return {
            restrict: "E",
            controller: "myController",
            link: function(scope, element, attrs) {
                scope.foo = element.text();
            },
            templateUrl: "myDirTemplate.html"
        }
    });

模板是:

<div>The value is: {{foo}}</div>

以及正在使用的指令如下:

<html>
...
<myDir>Bar</myDir> 
...
</html>

链接函数中的元素是指

<div>The value is: {{foo}}</div>

在模板中。如果我没有指定templateUrl,那么element指的是

<myDir>Bar</myDir> 

在主视图中,这就是我想要的。我希望该指令将“Bar”文本插入 {{foo}} 中,最终结果为:

<div>The value is: Bar</div> 

但我不知道如何绕过每次选择模板元素的角度。

有任何想法吗?

4

1 回答 1

22

您需要使用ngTransclude

app.directive('myDir', function(){
  return {
    restrict: "E",
    transclude: true,
    templateUrl: "myDirTemplate.html",
    replace: true
  }
});

然后你的外部模板变成类似于:

<div>The value is: <span ng-transclude></span></div>

在此处查看代码:http ://plnkr.co/edit/EuT5UlgyxgM8d54pTpOr?p=preview

于 2013-04-20T01:23:48.397 回答