2016-07-08 6 views
1

ich ng-click bin mit einem modal zu öffnen und für den Aufruf einer func:Winkel ng-Klick-Werke aus der zweiten Klick

<a class="btn btn-info" data-toggle="modal" data-target="#editWorkerModal" ng-click="workerInfo(worker.id); professionsInfo()"> 
    <i class="glyphicon glyphicon-edit white"></i> 
</a> 

Nun ist die modal geöffnet, die professionsInfo() Funktion lief, aber nicht gut in Beim ersten Mal klicke ich darauf.

Dies sind die professionInfo() func:

$scope.professionsInfo = function() { 
    $http({ 
     url: '/SafetyManager/professions', 
     method: "GET", 
    }).success(function (response) { 
     $scope.professions = response; 
     for(var i = 0, len1=$scope.info.professions.length; i<len1; i++) { 
      for(var n=0, len2=$scope.professions.length; n<len2; n++) { 
       if($scope.info.professions[i].id == $scope.professions[n].id) 
        $scope.professions[n].disabled = true; 
      } 
     }  
    }); 
}; 

Die func kehrt korrekte Daten von dem Server, und aktualisieren Sie es auf $scope.professions (Ich weiß, dass, weil die in Dropdown-Liste angezeigt Daten) aber die for-Schleife mit versagt der Fehler vom Browser:

Dann, wenn ich das modale schließe und wieder klicke, es funktioniert gut und es gibt keinen Fehler. Aber wenn ich auffrische, kehrt der Fehler beim ersten Klick zurück und verschwindet von dem zweiten.

Irgendeine Idee, wie man es repariert?

+0

einmal prüfen, indem Sie data-target = "# editWorkerModal" entfernen –

+0

Wie wird das geladen: $ scope.info.professions –

+0

Unterschied zwischen: $ scope.professions & $ scope.info.professions? Beim Klick wird $ scope.professions mit der Antwort geladen. Wo wird der andere geladen? –

Antwort

2

Rufen Sie nicht zwei Funktionen unter ng-click auf. Fügen Sie stattdessen die andere Funktion in Ihre ng-click-Funktion ein.

Zum Beispiel Ihre html:

<a ng-click="workerInfo(worker.id);"> 
    <i class="glyphicon glyphicon-edit white"></i> 
</a> 

Controller:

$scope.workerInfo = function(workerID) { 
    // Do something 
    $scope.professionsInfo(); 
}; 

$scope.professionsInfo = function() { 
    // Do something else 
} 

EDIT:

und rufen Sie Ihren modal öffnen sich nur, nachdem Sie den Erfolg von der $scope.professionsInfo http Antwort.

Oder noch besser kombinieren Sie die beiden und rufen Sie nur eine Funktion, die die http-Anfrage zuerst und dann öffnet das modale Fenster und macht den Rest der Sachen, die Sie brauchen.

+0

danke !! wenn ich professionsInfo in workerInfo hinzugefügt habe, ist das Problem gelöst :) –

0

Ich hatte das gleiche Problem und durch den Aufruf der Methode, sobald es funktioniert.

In meiner Seite habe ich eine Fabrik erstellt und alle Ajax-Anrufe mit drin behalten. Jetzt ist alles im Controller Teil geschrieben, also was ist der Einsatz von Fabrik und Service.

Verwandte Themen