Wie auf das Binden in der Komponente Angular 1.5 gewartet wird (ohne $ scope. $ Watch)

Ich schreibe eine Angular 1.5-Direktive und habe ein unangenehmes Problem mit dem Versuch, gebundene Daten zu manipulieren, bevor sie existieren.

Hier ist mein Code:

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
      }
     }
    })
}
...

Wie Sie sehen, rufe ich AJAX auf, um Favoriten abzurufen, und überprüfe es dann anhand meiner gebundenen Formularliste.

Das Problem ist, dass das Versprechen erfüllt wird, noch bevor die Bindung ausgefüllt ist ... sodass ctrl.forms zum Zeitpunkt, zu dem ich die Schleife ausführe, noch nicht definiert ist!

Wie warte ich, bis der Bindevorgang abgeschlossen ist, ohne ein $ scope. $ Watch zu verwenden (was Teil des Aufrufs von 1.5-Komponenten ist)?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage