Sto lavorando per arrivare alla velocità con 1.5 componenti angolari. Ho seguito i video di Todd Motto per iniziare sui componenti insieme alla documentazione di angular https://docs.angularjs.org/guide/component.
A questo punto sembra che le componenti stiano prendendo il posto delle direttive che utilizzano i controller, ma nel nostro codice 1.5 useremmo ancora le direttive per la manipolazione delle dom.
Qual è lo scopo di $ element, $ attrs all'interno di un controller di componente? Questi sembrano essere disponibili per la manipolazione. Ecco il link al plunker dei documenti. So che non stanno usando $ $, ma è l'esempio che sto leggendo. http://plnkr.co/edit/Ycjh1mb2IUuUAK4arUxe?p=preview
Ma nel codice in questo modo ...
angular
.module('app', [])
.component('parentComponent', {
transclude: true,
template: `
<div ng-transclude></div>
`,
controller: function() {
this.foo = function() {
return 'Foo from parent!';
};
this.statement = function() {
return "Little comes from this code";
}
}
})
.component('childComponent', {
require: {
parent: '^parentComponent'
},
controller: function() {
this.$onInit = function() {
this.state = this.parent.foo();
this.notice = this.parent.statement();
};
},
template: `
<div>
Component! {{ $ctrl.state }}
More component {{$ctrl.notice}}
</div>
`
})
Quale sarebbe l'uso di $ elemento se non stanno manipolando il DOM?
'template' funzione avrà Raw' DOM' e che non è corretto posto per fare manipolazione del DOM .. –
Grazie @PankajParkar Ho aggiornato la mia domanda dopo aver letto di nuovo i documenti. Sicuramente si ottiene che si usano ancora le funzioni di collegamento e le direttive in 1.5 con i componenti semplicemente non si ottiene $ elemento e la sua posizione in un controller componente se non è per manipolare il dom – Winnemucca
Ho una query simile, ma di più sul $ attrs. Se ho un input per il componente che non è mai usato nella vista, ma appena usato per qualche logica nel controller, dovrei passarlo attraverso i binding (buono per mantenere un'API coerente) o iniettare $ attrs nel controller e basta leggerlo direttamente da quello (che salva avere questa proprietà nel controller, che è forse più ordinata). Ovviamente entrambi funzionano bene. Attualmente sto cercando di rispondere a questo in termini di "cosa fa Angular 2?" ma devono ancora raggiungere una solida conclusione. Hai raggiunto ulteriori conclusioni te stesso? – sifriday