Geben Sie den aktuellen Bereich an modalInstance weiter, wenn Sie die controllerAs-Syntax verwenden.

Ich verwende die controllerAs-Syntax, um eine $ scope-Suppe in meinen Controllern zu vermeiden, und verwende ui.bootstrap, um eine modale Ansicht anzuzeigen.

Ich muss ein modalInstace öffnen, das denselben Bereich wie der aktuelle Controller hat. Wenn Sie das Zielfernrohr injizieren, könnten Sie wahrscheinlich Folgendes tun:

var modalInstance = $uibModal.open({
      templateUrl: 'addEditModal.html',
      scope: $scope
    });

Jedoch, da ich den Gültigkeitsbereich nicht injiziere und die controllerAs-Syntax verwende, funktioniert das nicht.

Von dem, was ich gefunden habe, müssen Sie resolid verwenden, um die Daten zu übergeben, aber Sie müssen sie explizit über Funktionen übergeben. Gibt es eine Möglichkeit, den gesamten Gültigkeitsbereich zu übergeben?

Es gibt eine Menge Dinge, die ich in diesem modalen Modus tun muss, und die Weitergabe von Daten scheint übertrieben.

Will das nicht tun, da es chaotisch scheint ...

var modalInstance = $modal.open({
  templateUrl: 'myModalContent.html',
  controller: 'ModalInstanceCtrl',
  resolve: {
    user: function() {
        return vm.user;
    },
    something: function() {
        return vm.something;
    },
    blah: function() {
        return blah;
    }
  }
});

Irgendwelche besseren Ideen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage