Według the docs (w szczególności tabela porównująca dyrektywy z komponentami) komponenty kątowe umożliwiają zastosowanie innych dyrektyw (lub czy są to tylko komponenty?). Jednak komponenty nie mają funkcji łącza, która mogłaby dać dostęp do wymaganego kontrolera. The source, w przeciwieństwie do dokumentacji, wydaje się sugerować, że nie można używać "wymagać" podczas tworzenia komponentów. Która prawda?"Wymagaj" w składniku kątowym
11
A
Odpowiedz
17
Cytowane źródło jest nieaktualne. Od wersji 1.5.0 kontrolery komponentów can be required w innych komponentach (to samo dotyczy dyrektyw).
Przykład z przewodnika shows the way how the components and directives should interact w wersji 1.5 bez pomocy z link
.
Gdy używane są , wymagane instancje kontrolera są przypisywane do kontrolera prądu jako właściwości.
Ponieważ dzieje się to podczas łączenia linków, wymagane kontrolery nie są dostępne w konstruktorze kontrolera, dlatego istnieje tam $onInit
magic method. Jeśli istnieje, it is executed right after adding required controllers do this
.
Oba
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);
};
}
}
});
i
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);
};
}
});
style deklaracji są na równi pod maską i mogą być używane zamiennie w 1,5 i component
jest zwięzły jeden.