AngularJS: ngInclude vs Direktive
Verstehe ich nicht ganz, Wann eine Richtlinie und wenn wäre es eher angebracht zu verwenden nginclude. Nehmen Sie dieses Beispiel: ich habe einen teilweise password-and-confirm-input-fields.html
das ist der html-Code für Eingabe und Bestätigung eines Kennworts. Ich benutze diese sowohl unter signup-Seite und unter " change-password-Seite. Diese beiden Seiten hat eine Steuerung, die teilweise von html hat keine dedizierte Steuerung.
Sollte ich verwenden, Richtlinie oder ngInclude
?
InformationsquelleAutor der Frage EricC | 2014-06-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt alles davon ab, was Sie wollen aus Ihrem code-fragment. Persönlich, wenn der code über keine Logik, oder braucht nicht einmal einen controller, dann gehe ich mit
ngInclude
. Ich in der Regel legen Sie großen mehr "statische" html-Fragmente, die ich nicht wollen, überladen den anzeigen hier. (sprich: sagen wir mal eine große Tabelle, die Daten kommen von der übergeordneten Steuerung trotzdem. Es ist sauberer zu haben<div ng-include="bigtable.html" />
als all die Linien überladen die Ansicht)Wenn es Logik, DOM-manipulation, oder Sie müssen es anpassbar zu sein (aka gerendert) in verschiedenen Fällen ist es verwendet wird, dann
directives
sind die bessere Wahl (Sie sind entmutigend auf den ersten, aber Sie sind sehr mächtig, lassen Sie sich Zeit).ngInclude
Manchmal sehen Sie
ngInclude's
betroffen sind, durch Ihre äußere$scope
/interface
. Wie groß/kompliziert repeater können sagen. Diese 2 Schnittstellen miteinander verbunden sind, weil dieser. Wenn etwas in der main -$scope
ändert, müssen Sie ändern /ändern Sie Ihre Logik in Ihr enthalten teilweise.Richtlinien
Auf der anderen Seite, Richtlinien kann haben explizite Bereiche /Controller /etc. Also, wenn du denkst, ein Szenario, wo Sie würde haben, um die Wiederverwendung von etwas mehrere Male, können Sie sehen, wie mit seinem eigenen Umfang verbunden wäre, das Leben leichter machen & weniger verwirrend.
Auch, wenn Sie gehen, um die Interaktion mit dem DOM, sollten Sie verwenden eine Richtlinie. Dies macht es besser für den Test und entkoppelt diese Aktionen Weg von controller /Dienst /etc, das ist etwas, was Sie wollen!
Tipp: Stellen Sie sicher nicht Verwendung beschränken: 'E', wenn Sie sich über IE8! Es gibt Möglichkeiten, um dieses, aber Sie sind lästig. Nur das Leben leichter machen und halten mit dem Attribut "/etc".
<div my-directive />
Komponenten [Update 3/1/2016]
Hinzugefügt Winkel-1.5, es ist im wesentlichen ein wrapper um
.directve()
. Komponente verwendet werden sollte, die meisten der Zeit. Es entfernt eine Menge von boilerplate-Richtlinie code, durch säumige Dinge wierestrict: 'E', scope : {}, bindToController: true
. Ich empfehle sehr, diese für fast alles, was in Ihrer app verwenden, um der Lage sein, um den übergang zu Angular2 leichter.Fazit:
Sollten Sie erstellen Komponenten & Richtlinien eine Mehrheit der Zeit.
Update 3/1/2016
Nun, der Winkel 2 ist langsam einwickeln, und wir wissen, dass das Allgemeine format (natürlich wird es noch einige änderungen hier und da), wollte nur hinzufügen, wie wichtig es ist, zu tun
components
(manchmal Richtlinien, wenn Sie Sie brauchen zu beschränken: 'E' zum Beispiel).Komponenten sind sehr ähnliche zu Eckig 2
@Component
. Auf diese Weise werden wir Kapselung von Logik & html in der gleichen Gegend.Stellen Sie sicher, dass Sie zu Kapseln, so viele Dinge wie möglich in Komponenten, den übergang zu einem Winkel 2, viel einfacher! (Wenn Sie sich entscheiden, den übergang zu machen)
Hier ist ein netter Artikel beschreibt die migration mit
directives
(sehr ähnlich, wenn Sie im Begriff waren, zu verwenden, Komponenten natürlich) : http://angular-tips.com/blog/2015/09/migrating-directives-to-angular-2/InformationsquelleAutor der Antwort Mark Pieszak - DevHelp.Online