2016-04-01 7 views
0

Ich habe einen Seitencontroller auf meiner Website, der mehrere Modale enthält. Einige der modalen Controller werden robuster und ich möchte sie in separate Controller verschieben, ohne den Umfang des äußeren Seitencontrollers zu verlieren (der modale Controller verwendet einige Funktionen und Eigenschaften des Seitencontrollers) - ist das möglich? Bisher erhalte ich Fehler bei allem, was auf den äußeren Controller hinweist. Hier ist ein einfaches Beispiel dafür, wie ich sie aufrichtenverschiebende modale Winkelregler in separate Dateien

der Seite Controller:

angular.module('myApp') 
.controller('outerCtrl', function(MetaService) { 
    var thisCtrl = this; 

    thisCtrl.someFunction = function() { 
     //some cool functionality that will elvaluate something 
    } 

    function optionsModal() { 
     var PageCtrl = thisCtrl; 

     $uibModal.open({ 
      'controller': 'scripts/controllers/optionsModal.js', 
      'controllerAs': 'ModalCtrl', 
      'templateUrl': 'views/modals/optionsModal.html', 
      'size': 'md'    
     }); 
    } 
}); 

der Modal-Controller:

angular.module('myApp') 
.controller('optionsModalCtrl', function(MetaService) { 
    var modalCtrl = this; 

    function giveOptions() { 
     if (PageCtrl.someFunction()) { 
      //offer some option 
     } else { 
      //offer a different option 
     } 
    } 

}); 

Antwort

0

Hier ist die example von der offiziellen Seite:

var modalInstance = $uibModal.open({ 
     animation: $scope.animationsEnabled, 
     templateUrl: 'myModalContent.html', 
     controller: 'ModalInstanceCtrl', 
     size: size, 
     scope: $scope, // pass parent scope to modal instance 
     resolve: { 
     items: function() { 
      return $scope.items; 
     } 
     } 
    }); 
+0

danke, das macht Sinn, aber scheint nicht für mich arbeiten. Ich las den Link und versuchte ein paar verschiedene Möglichkeiten. Anscheinend müsste man alles anhängen, auf das der Controller des Modales zugreifen soll - das möchte ich nicht tun (ich werde von der Verwendung von $ scope in meinem Code abgeraten), also habe ich '$ scope.pageCtrl = PageCtrl versucht 'den Rahmen auf diese Weise zu übergeben, was nicht funktioniert hat. Nur um des Experimentierens willen habe ich einen Bereich an einige Dinge angehängt, den Bereich als eine Eigenschaft des Modals übergeben und immer noch die Fehler vom Controller des Modals erhalten :( – HolyMoly

Verwandte Themen