2013-11-02 12 views
16

C'è un modo per passare un templateUrl alla mia direttiva. Capisco che posso usare la transclusione, ma sembra troppo. Ad esempio, ho una direttiva widget che voglio riempire con html specifico. C'è un modo per passare in come:Posso passare templateUrl alla direttiva - AngularJS

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

risposta

33

Se questo è un URL fisso è possibile definire una direttiva come

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

poi usarlo come questo

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

Altrimenti è possibile passare l'URL come se si passasse qualsiasi altro attributo in una direttiva e utilizzare ng-include nel modello della direttiva.

+2

Non è possibile utilizzare la funzione come 'templateUrl' in Angular 1.0.8, quindi assicurarsi di utilizzare almeno 1.1.4 Angular. – lort

+1

Buon punto. È passato un po 'di tempo da quando ho usato un ramo stabile! 'ng-include' dovrebbe funzionare comunque in entrambi i casi. – Andyrooger

+0

Anche confermato per funzionare in 1.4.x – beauXjames

Problemi correlati