2016-11-08 2 views
0

Ich habe eine Tabelle mit Daten gefüllt; Ich habe eine Schaltfläche zum Löschen einer Zeile, und ich habe Eingabefelder, die Daten aus der ausgewählten Zeile aus der Tabelle zeigen.Wie eine Scope-Funktion von einem anderen angularjs aufrufen?

Zuerst muss ich diese Zeile auswählen ... dann die Eingabefelder r gefüllt mit den Daten aus der gleichen Zeile .... sobald ich es getan habe, kann ich delete drücken ... und die Zeile wird gelöscht ... und die Zeile unter dieser gelöschten Zeile ist nun angewählt ... (was ich ändern kann, um nicht zu sein) ... aber die alten Werte aus der gelöschten Zeile sind immer noch in den Eingabefeldern ...

Jetzt ich muss etwas tun ... 2 Möglichkeiten:

  1. setzen die ausgewählte Zeile auf null, und deaktivieren sie alle Eingabefelder ... (die ich keine Ahnung, wie es zu tun ...)

  2. die neue ausgewählte Zeile verwenden und seine Daten in die Eingabefelder ausfüllen ... Hexe meiner Meinung nach ist der bessere Weg zu gehen ...

Also bitte helfen Sie mir, hier ist der Code:

In meiner html-Datei ich habe diese:

<p>ID</p> 
<input ng-model="student.id"> 
<p>Name</p> 
<input ng-model="student.firstname"> 
<p>Last Name</p> 
<input ng-model="student.lastname"> 

<button ng-click="deleteStudent(student)">Delete Student</button> 


    <table name="tableStud" arrow-selector> 
     <tbody> 
      <tr> 

       <td>ID</td> 
       <td>First Name</td> 
       <td>Last Name</td> 
       <td>From</td> 
      </tr> 

      <tr ng-repeat="student in result" 
       ng-class="{'selected':$index == selectedRow}" 
       ng-click="setSelected(student,$index)"> 
       <td>{{ student.id }}</td> 
       <td>{{ student.firstname }}</td> 
       <td>{{ student.lastname }}</td> 
       <td>{{ student.mestorodjenja.ime }}</td> 

      </tr> 

     </tbody> 
    </table> 

ich habe einen controler .... mit diesem:

$scope.deleteStudent = function(student) { 
    $http.post('http://localhost:8080/CreditCardWEB/rest/cc/delete', 
      student).success(function(data) { 
     $scope.result.splice($scope.selectedRow, 1); 

    }); 

}; 

$scope.selectedRow = null; 

$scope.setSelected = function(student, index) { 
    $scope.student = student; 
    $scope.selectedRow = index; 
}; 

Antwort

0

Sie konnten die Schüler nach dem Löschen aktualisieren:

$scope.result.splice($scope.selectedRow, 1); 
$scope.student = $scope.result[0]; 

Oder wenn Sie nur ein paar Attribute aktualisieren möchten, zum Beispiel Vorname: $ scope.student. Vorname = $ scope.result [0] .firstname;

+0

thx man u hellped mich alot ich wählte u, aber es scheint, ich kann ur Punktzahl steigern bc i niedrig Ruf .... dies war das Endergebnis: $ scope.student = $ scope.result [$ scope.selectedRow]; – newb

0

Ich denke, wenn Sie die Zeile hinzufügen, um die selectedRow und Schüler auf Null in den Post-Erfolg setzt, ist ein guter Anfang.

$http.post('http://localhost:8080/CreditCardWEB/rest/cc/delete', 
    student).success(function(data) { 
     $scope.result.splice($scope.selectedRow, 1); 
     $scope.selectedRow = null; 
     $scope.student = null; 
}); 

Darüber hinaus würde ich vorschlagen, dass Sie nur das Formular anzeigen, wenn selectedRow nicht null ist.

Etwas wie folgt aus:

<div ng-show="selectedRow !== null"> 
    <p>ID</p> 
    <input ng-model="student.id"> 
    <p>Name</p> 
    <input ng-model="student.firstname"> 
    <p>Last Name</p> 
    <input ng-model="student.lastname"> 
    <button ng-click="deleteStudent(student)">Delete Student</button> 
</div> 
Verwandte Themen