2016-11-07 3 views
1

Ich habe eine Eingabe Tag wie folgt nicht füllen mit:Rück macht Eingang ng-Modell

<input ng-model='number'> 

und eine Reihe von Tasten, die diese Eingabe zu füllen:

<a class='btn' ng-click='pop(1)'>1</a> 

Dies ist die Pop-Funktion:

$rootScope.pop = function(number) { 
    $rootScope.number = $scope.number + number; 
} 

Die Schaltflächen und alle füllen das Modell und Eingabe richtig, aber wenn ich die Rücktaste auf der Tastatur zu e Wenn Sie den aktuellen Inhalt der Eingabe ändern, wird das Klicken auf die Schaltfläche nicht mehr ausgefüllt und das Eingabefeld angezeigt.

Ich habe versucht, einen Event-Listener zu machen, wenn die Rücktaste gedrückt wird und Backspace mit einer benutzerdefinierten Funktion behandelt wird, aber das hat nicht funktioniert. Irgendwelche Ideen, warum das passiert?

Antwort

0

über das Problem behoben. Offenbar war dies auf ein Problem mit dem Winkelbereich zurückzuführen.
Anstatt $ rootScope.number zu verwenden, habe ich ein Objekt erstellt und die Eigenschaft des Objekts als Zahl festgelegt.
Zum Beispiel: $rootScope.obj.number


die Eigenschaft des Objekts verwenden das Problem behoben, nur ein wenig Lesung am Winkeltive tun musste.

1

Fügen Sie eine Vorprüfung hinzu, bevor Sie die Zahl hinzufügen, um festzustellen, ob sie null oder undefiniert ist. Wenn Sie das Eingabefeld löschen, die var number ist undefined oder ""

$rootScope.pop = function(number) { 
    // !== Compares two expressions to determine if they are not equal in value or of the same data type 
    if($rootScope.number !== undefined && $rootScope.number !== null){ 
     //Added "" just to make sure the number is treated like a string 
     $rootScope.number = "" + $rootScope.number + number; 
    } else { 
     $rootScope.number = "" + number; 
    } 
} 

Und im Code definieren $rootScope.number als string

$rootScope.number = ""; 
+0

Dies funktioniert nicht, was ich erkannte, ist, nachdem ich Tasten für 1, 2, 3, $ rootScope.number = 123 drücken. Nachdem ich die Zahlen auf der Eingabe löschen, würde ich $ rootScope.number erwarten gleich oderefiniert oder "", aber es ist immer noch 123. –

+0

Möchten Sie "123" sein, nachdem Sie die Tasten 1 2 3 oder '6' gedrückt haben? – driconmax

+0

123, im Grunde habe ich ein Wähltastenfeld, jede Taste fügt eine Ziffer zu $ ​​scope.number hinzu, die das Modell der Eingabe ist, die die Pop-Funktion verwendet. –