Sto scrivendo una direttiva Angular 1.5 e sto correndo un problema odioso con il tentativo di manipolare i dati associati prima che esista.
Ecco il mio codice:
app.component('formSelector', {
bindings: {
forms: '='
},
controller: function(FormSvc) {
var ctrl = this
this.favorites = []
FormSvc.GetFavorites()
.then(function(results) {
ctrl.favorites = results
for (var i = 0; i < ctrl.favorites.length; i++) {
for (var j = 0; j < ctrl.forms.length; j++) {
if (ctrl.favorites[i].id == ctrl.newForms[j].id) ctrl.forms[j].favorite = true
}
}
})
}
...
Come potete vedere, sto facendo una chiamata AJAX per ottenere preferiti e poi controllando contro la mia lista legato delle forme.
Il problema è che la promessa viene soddisfatta anche prima che il binding venga compilato ... in modo che nel momento in cui eseguo il ciclo, ctrl.forms non sia ancora definito!
Senza utilizzare un $ scope. $ Watch (che fa parte del fascino di 1.5 componenti) come posso attendere il completamento del binding?
hai provato $ timeout? potrebbe innescare autonomamente un computo del ciclo di vita. Oppure $ onInit – Martian2049