2013-04-20 61 views
9

因此,我正在關注自定義組件上的this EggHead.io tutorial,並且我遇到了這個問題。當聲明一個指令,例如:訪問模板內的角度指令(元素)的文本

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,然後元素

<myDir>Bar</myDir> 

在主視圖,這就是我想要的。我希望該指令將採取「酒吧」文本,並將其插入到{{FOO}},給人的最終結果:

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

但我不知道怎麼去解決的角度選擇模板的元素每一次。

任何想法?

回答

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

+0

這個工作!謝謝! – 2013-04-22 18:50:00

+0

謝謝!這工作! – ZhukV 2015-10-01 05:57:17