2016-02-09 9 views
11

Gemäß the docs (speziell die Tabelle, die Direktiven mit Komponenten vergleicht), erlauben Winkelkomponenten die Verwendung anderer Direktiven (oder sind es nur Komponenten?). Komponenten haben jedoch keine Verknüpfungsfunktion, die Zugriff auf den erforderlichen Controller geben könnte. Im Gegensatz zur Dokumentation scheint The source darauf hinzuweisen, dass die Verwendung von "require" beim Erstellen von Komponenten nicht möglich ist. Was wahr ist?Verwenden von 'require' in winkelförmiger Komponente

Antwort

17

Die angegebene Quelle ist veraltet. Ab 1.5.0 Komponenten-Controller can be required in anderen Komponenten (Gleiches gilt für Anweisungen).

Ein Beispiel aus der Anleitung shows the way how the components and directives should interact in 1.5 ohne die Hilfe von link.

Wenn require object and bindToController zusammen verwendet werden, werden die erforderlichen Controller-Instanzen dem aktuellen Controller als Eigenschaften zugewiesen.

Da dies während der Direktivenverknüpfung geschieht, sind die erforderlichen Controller im Controller-Konstruktor nicht verfügbar, deshalb ist $onInit magic method da. Wenn es existiert, it is executed right after adding required controllers bis this.

Beide

app.directive('someDirective', function() { 
    return { 
    scope: {}, 
    bindToController: {}, 
    controllerAs: 'someDirective', 
    require: { 
     anotherDirective: '^anotherDirective' 
    }, 
    controller: function ($scope) { 
     console.log("You don't see me", this.anotherDirective); 

     this.$onInit = function() { 
     console.log("Now you do", this.anotherDirective); 
     }; 
    } 
    } 
}); 

und

app.component('someComponent', { 
    controllerAs: 'someComponent', 
    require: { 
    anotherDirective: '^anotherDirective' 
    }, 
    controller: function ($scope) { 
    console.log("You don't see me", this.anotherDirective); 

    this.$onInit = function() { 
     console.log("Now you do", this.anotherDirective); 
    }; 
    } 
}); 

Erklärung Stile sind auf einem Niveau unter der Haube und kann in 1,5 austauschbar verwendet werden, und component ist eine kurze ein.

Verwandte Themen