Secondo lo the docs (in particolare, la tabella che confronta le direttive con i componenti), i componenti angolari consentono di richiedere altre direttive (o sono solo componenti?). Tuttavia, i componenti non hanno una funzione di collegamento, che potrebbe consentire l'accesso al controller richiesto. The source, contrariamente alla documentazione, sembra suggerire che non è possibile utilizzare 'require' durante la creazione dei componenti. Che è vero?Utilizzo di 'require' nel componente angolare
risposta
La fonte citata non è aggiornata. A partire dalla 1.5.0, i controller dei componenti can be required in altri componenti (lo stesso vale per le direttive).
Un esempio dalla guida shows the way how the components and directives should interact in 1.5 senza l'aiuto da link
.
Quando require
object and bindToController
vengono utilizzati insieme, le istanze del controller necessarie vengono assegnate al controller corrente come proprietà.
Poiché ciò accade durante il collegamento della direttiva, i controller richiesti non sono disponibili nel costruttore del controller, ecco perché $onInit
magic method è presente. Se esiste, it is executed right after adding required controllers a this
.
Entrambi
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);
};
}
}
});
e
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);
};
}
});
stili di dichiarazione sono alla pari sotto il cofano e possono essere usati in modo intercambiabile in 1.5, e component
è una concisa.