2013-11-02 40 views
16

有沒有辦法將templateUrl傳遞給我的指令。我知道我可以使用transclusion,但似乎太多了。例如,我有一個widget指令,我想用特定的html填充。有沒有辦法通過它像:我可以將templateUrl傳遞給指令嗎?AngularJS

<div widget templateUrl="template1.html"></div> 
<div widget templateUrl="template2.html"></div> 

回答

33

如果這是一個固定的網址,你可以定義一個指令,如

app.directive('myDirective', function() { 
    return { 
     templateUrl: function(tElement, tAttrs) { 
      return tAttrs.templateUrl; 
     } 
    }; 
}); 

然後使用它像這樣

<div my-directive template-url="template1.html"></div> 

否則您可以通過URL,因爲您可以將任何其他屬性傳遞給指令,並在您的指令模板中使用ng-include

+2

您不能在Angular 1.0.8中使用函數作爲'templateUrl',所以一定要使用至少Angular 1.1.4。 – lort

+1

好點。自從我使用穩定分支以來已經有一段時間了! 'ng-include'仍然可以通過任何方式工作。 – Andyrooger

+0

也證實在1.4.x工作 – beauXjames

相關問題