2016-09-01 2 views
0

Angenommen, ich habe eine Reihe von Werten I mit zu verwirren wollen, sagen:AngularJS Eigenschaft von Objekt löschen, wenn ng-Klick-Triggerung()

Sample

Und wenn Sie bemerkt haben, da gibt es einen Bleistift. Ich möchte in der Lage sein, den Wert dieser Zelle in-line zu bearbeiten, der eine Eingabe zeigt, die ich einen neuen Wert für diese Zelle einfach eingeben kann. Dies ist, was ich benutze, um dies zu ermöglichen:

<td ng-show="showThisColumn(1)==true" class="text-center" 
    ng-mouseenter="employee.nameEditing = true" 
    ng-mouseleave="employee.nameEditing = false"> 
    <span ng-hide="employee.nameEditor">{{employee.firstName + ' ' + employee.lastName}}</span> 
    <i class="fa fa-pencil e-icon" ng-show="employee.nameEditing && !employee.nameEditor" 
     ng-click="employee.nameEditor = true"></i> 
    <div class="form-group-sm"> 
     <input type="text" class="form-control input-sm" ng-model="employee.firstName" 
       ng-show="employee.nameEditor"> 
    </div> 
    <div class="form-group-sm"> 
     <input type="text" class="form-control input-sm" ng-model="employee.lastName" 
       ng-show="employee.nameEditor"> 
    </div> 
    <div class="form-group-sm"> 
     <i class="fa fa-check f-icon" ng-show="employee.nameEditor" 
      ng-click="employee.nameEditor = false; editEmployee(employee)"></i> 
     <i class="fa fa-times f-icon" ng-show="employee.nameEditor" 
      ng-click="employee.nameEditor = false"></i> 
    </div> 
</td> 

Scheint nicht so schlimm, aber hier ist das Problem. Wenn ich die Eigenschaften nameEditor und nameEditing nicht lösche, wirft das Backend 400 BAD REQUEST, in dem das Objekt, das ich poste, syntaktisch falsch ist. Stellen Sie sich nun die Anzahl der DELETE obj.prop Zeilen vor, die ich schreiben muss.

Dies ist, was ich versucht habe, und ohne zu fragen, das funktioniert nicht.

ng-click="delete employee.nameEditor; delete employee.nameEditing;" 

Irgendwelche Eingaben?

EDIT: Wenn ich alle meine DELETE-Anweisungen für jede Spalte Zelle laden, dann wird es mir einen Fehler werfen, wenn ich sage, Zelle A und es versucht, eine Eigenschaft zu löschen, die beim Bearbeiten eingefügt wird Zelle B. Eine andere Problemumgehung ist es, mehrere Methoden zu machen und es so zu machen: ng-click="deleteNameEditor()" aber das ist meiner Meinung nach zu viel Arbeit.

EDIT2: Das ist meine ng-repeat für die Tabelle, falls es nicht klar ist, dass ich jede Zeile mit voreingestellten Werten bin Looping.

<tr ng-repeat="employee in employees | filter: search track by $index"> 

Antwort

1

Ich glaube, Sie können dies nur tun:

ng-click="employee.nameEditor = undefined; 
employee.nameEditing = undefined; 

und wenn Sie $ http angular service verwenden, um die Anforderung zum Back-End zu stellen, werden automatisch die Felder mit undefinierten Werten entfernt.

+0

Schön! Aus irgendeinem Grund hat das vorher nicht funktioniert. Aber es funktioniert jetzt, danke, Kumpel! – Kei

0

Versuchen Sie, den folgenden Code
In den Button

ng-click = "deleteProperty()" 

In der Steuerung

$scope.deleteProperty = function() { 
     delete $scope.employee.nameEditor; 
     delete $scope.employee.nameEditing; 
    } 
+0

Wenn Sie die Verwendung des Controllers vermeiden möchten, können Sie auch die Eigenschaft des Objekts als nicht definiert festlegen. –

+0

Ich sah beide Lösungen von googeln, nicht die besten. Außerdem, wenn ich alle meine DELETE-Anweisungen in dieser Funktion lade, was passiert dann, wenn eine der Anweisungen, sagen wir in diesem Fall, employee.dobEdior nicht existiert? Das bringt mir einen Fehler, und wenn ich mehrere Funktionen für jede Spalte lade, ist das zu viel Arbeit. – Kei

Verwandte Themen