2015-09-09 1 views
5

Ciao ho StudentController come segue,Come impostare la proprietà ambito di NgDialog quando si usa la sintassi controllerAs

function StudentController($scope,StudentService){ 
    $scope.student = StudentService. getStudent(); 

    $scope.editStudent = function(){ 
    return ngDialog.openConfirm({ 
         template: 'edit-student.html', 
         className: 'ngdialog-theme-default', 
         scope : $scope // LINE 1 
       }); 
    } 
} 

Quando viene richiamata la funzione editStudent, voglio aprire una finestra per mostrare l'opzione di modifica. E voglio usare lo $scope.student di StudentController nello edit-student.html come dati del modello. per questa funzionalità, è possibile utilizzare la proprietà scope di NgDialog come scope:$scope (vedere LINE 1).

Ora sto cercando di cambiare il StudentController come suggerito nella Angular-StyleGuide dove io non ho intenzione di utilizzare il $scope in controller a tutti. In tal caso, come posso accedere a student in edit-student.html?

function StudentController(StudentService){ 
     var vm = this; 
     vm .student = StudentService.getStudent(); 

     return ngDialog.openConfirm({ 
          template: 'edit-student.html', 
          className: 'ngdialog-theme-default', 
          scope : ??? 
         // $scope is not used in this controller. 
         //Then what should I send instead? 
         // I tried using scope : vm . But it didn't work. 
        }); 
     } 

Aggiornamento: aggiornato con ulteriori dettagli per evitare confusione.

risposta

1

Penso che tu stia confondendolo un po '. Se si desidera utilizzare controllerAs Sintassi, è necessario un proprio controller per la finestra di dialogo. ad es.

function StudentController(StudentService){ 
    var student = StudentService.getOne(); 
    return ngDialog.openConfirm({ 
         template: template, 
         className: 'ngdialog-theme-default', 
         controller: DialogController 
         controllerAs: 'vm', 
         resolve: {student: function() {return student; } } 
       }); 
    } 

    function DialogController(student) { 
       var vm = this; 
       vm.student = student; 
    } 
+0

scusa se non ho spiegato correttamente la domanda. Non voglio usare un controller separato per ngDialog. C'è un'opzione per impostare come 'scope: $ scope'. Questa opzione funzionerà solo quando il controller corrente viene iniettato con '$ scope'. ma quando il controller corrente segue la sintassi vm, allora come dovrebbe essere questa proprietà '' scope' di 'ngDialog'? – DRB

+0

sì, ho frainteso la tua domanda. Non so come passare lo scope in questo caso. Ma come vuoi semplicemente accedere allo studente potresti passarlo come parametro di risoluzione. Vedi la mia versione modificata. –

+0

Stai dicendo di ereditare l'ambito genitore sul modello ngDialog che è necessario passare un parametro di risoluzione con una funzione che restituisce l'ambito corrente var? Uno per uno? Ew. – AlxVallejo

0

Penso che si possa omettere del tutto. Questo sembra funzionare per me.