2015-09-09 5 views
5

Hallo mit Ich habe StudentController wie folgtWie Umfang Eigentum von NgDialog setzen, wenn controllerAs Syntax

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

Wenn editStudent Funktion aufgerufen wird, ich will einen Dialog öffnen bearbeiten Option zu zeigen. Und ich möchte die $scope.student von StudentController selbst in der edit-student.html als Modelldaten verwenden. Für diese Funktion kann ich die scope Eigenschaft von NgDialog als scope:$scope verwenden (siehe LINE 1).

Jetzt versuche ich, die StudentController zu ändern, wie in den Angular-StyleGuide vorgeschlagen, wo ich nicht die $scope in controller überhaupt benutzen werde. In diesem Fall, wie kann ich auf student in edit-student.html zugreifen?

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

aktualisieren: mit mehr Details aktualisiert Verwirrung zu vermeiden.

Antwort

1

Ich denke, du verwirrst es ein bisschen. Wenn Sie controllerAs Syntax verwenden möchten, benötigen Sie einen eigenen Controller für den Dialog. z.B.

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

Entschuldigung, wenn ich die Frage nicht richtig erkläre. Ich möchte keinen separaten Controller für den ngDialog verwenden. Es gibt eine Option wie 'scope: $ scope'. Diese Option funktioniert nur, wenn der aktuelle Controller mit $ scope versorgt wird. Aber wenn der aktuelle Controller der vm-Syntax folgt, wie sollte dann diese "scope" -Eigenschaft von "ngDialog" aussehen? – DRB

+0

Ja dann habe ich deine Frage missverstanden. Ich kann den Umfang in diesem Fall nicht übergeben. Aber da Sie einfach auf den Schüler zugreifen möchten, können Sie ihn als resolve param übergeben. Siehe meine modifizierte Version. –

+0

Sie sagen, dass Sie den übergeordneten Bereich in der ngDialog-Vorlage erben, die Sie benötigen, um einen resolve-Parameter mit einer Funktion zu übergeben, die den aktuellen Gültigkeitsbereich var zurückgibt. Einer nach dem anderen? Ew. – AlxVallejo

0

Ich denke, Sie können es vollständig weglassen. Das scheint für mich zu funktionieren.

Verwandte Themen