2016-04-27 9 views
1

Ich versuche, MD-Dialog in eckigen js1.5 zu laden, wenn auf Klick der Schaltfläche und alles, was ich sehe, ist das HTML Markup in Modal Pop-up, aber nicht der Controller lädt dafür Komponente. Im Anschluss ist mein Markup für die md-Dialog Datei zeigt, die den DialogMd-Dialog lädt nicht den Controller, der damit verbunden ist

$mdDialog.show ({ 
     template: require('../traderdialog/traderdialog.html'), 
     controller: Controller, 
     controllerAs: 'vm', 
     locals : { 
      traderId : traderId 
     }, 
     clickOutsideToClose : true 
     }); 
    } 

So ruft, wenn ich Controller tun: Controller an verschiedene Komponente geht, wie ich in meiner Verzeichnisstruktur haben. Mein Code für traderdialog.js folgt als

angular.module('dashboard') 
.component('traderdialog', { 
    template: require('./traderdialog.html'), 
    controller: Controller, 
    controllerAs: 'vm', 
    bindings: { 

    } 
}); 

function Controller($mdDialog) { *some code* } 

Antwort

0
$mdDialog.show ({ 
     template: require('../traderdialog/traderdialog.html'), 
     controller: function ControllerName($scope){ 
        $scope.data = "Controller Loaded"; 
     }, 
     locals : { 
      traderId : traderId 
     }, 
     clickOutsideToClose : true 
     }); 
    } 

ODER

$mdDialog.show ({ 
      template: require('../traderdialog/traderdialog.html'), 
      controller: controllerName, 
      locals : { 
       traderId : traderId 
      }, 
      clickOutsideToClose : true 
      }); 
     } 
    function controllerName($scope){ 
         $scope.data = "Controller Loaded"; 
      } 
+0

Bitte überprüfen Sie meine aktualisierte Version von @Mohsin –

0

Sie sollten die Daten, die Sie von der übergeordneten Steuerung an den Rahmen der modalen wollen injizieren. Wenn Modal geöffnet wird, hat es einen eigenen Bereich.

$mdDialog.show ({ 
    template: require('../traderdialog/traderdialog.html'), 
    controller: 'MyCtrl', 
    locals : { 
     traderId : traderId 
    }, 
    clickOutsideToClose : true 
    }); 
} 

Jetzt definieren wir Ihren Controller für Sie modal traderdialog.html. Jetzt

angular.module('app').controller('MyCtrl',['traderId', function(traderId){ 
    console.log(traderId); 
}]); 

die traderId auf Ihrer modalen reflektieren.

0

Es gibt zwei Wegeregler in mdDialog zu benutzen, ist einer von ihnen gleichen Umfang mit den Eltern verwendet in Rahmen zu erhalten:

$mdDialog.show({ 
      controller: function() { 
      return self; 
      }, 
      templateUrl: 'templates/mdDialog.html', 
      parent: angular.element(document.body), 
      targetEvent: ev, 
      clickOutsideToClose: false, 
      bindToController: true, 
      scope: $scope, 
      hasBackdrop: true, 
      preserveScope: true 
     }); 

ein anderes ist verwenden, um mit controllerAs Attribute und initialisieren:

$mdDialog.show({ 
     controller: DialogController, 
     templateUrl: 'templates/mdDialog.html', 
     parent: angular.element(document.body), 
     targetEvent: ev, 
     clickOutsideToClose: true, 
     controllerAs: 'DlgCtrl', 
     bindToController: true, 
     locals: { 
      formData: $scope.formData, 
     } 
     }) 

und Sie können Ihre Einheimischen mit DlgCtrl.formData-Syntax erreichen.