2016-04-12 4 views
1

Ich versuche herauszufinden, ob Sie mehr als eine HTML-Datei in einer Direktive haben können und dann abhängig davon, was Sie durch das HTML-Tag übergeben, zeigt es ein anderes HTML-Layout.Angular.JS - Ist es möglich, mehrere Ansichten in einer Direktive zu haben?

Dies ist etwas, das für ein Akkordeon benötigt wird, das ich baue. Wir wollen die Direktive wiederverwenden können, aber manchmal hat das HTML ein anderes Layout.

Bisher ich glaube, das durch die folgenden getan werden kann:

<accordion data-attr="layout('feedback')></accordion>

Dann in dem Js überprüfen, was die accodion zu einer anderen Ansicht weitergegeben und Punkt ist.

Das Bit, über das ich mich nicht sicher bin, verweist die Akkordeon-Direktive auf eine andere HTML-Datei.

Antwort

2

Sie einfach die ng-include Direktive in Ihrer Vorlage verwenden:

module.directive('accordion', function() { 
    return { 
    scope: { type: '&' }, 
    template: '<div ng-include="type()"></div>' 
    }; 
}); 
+0

Cheers, hat dies eine Menge geholfen –

1

Ja, in Ihrer Anweisung können Sie Ihre Vorlage als eine Funktion definieren, die das Element und die Attribute akzeptiert.

.directive('accordion', function() { 
    return { 
    templateUrl: function(elem, attr){ 
     return 'layout-' + attr.type + '.html'; 
    } 
    }; 
}); 

Und verwenden Sie es mögen:

<accordion type="some-file"></accordion> 
Verwandte Themen