2016-06-13 9 views
0

Ich habe ein Eingabefeld, und ich arbeite mit Scanner, der automatisch Zahlen eingibt, wenn etwas scannt, jetzt möchte ich diesen Wert automatisch einer Variablen zuweisen, und löschen Sie es, damit es eine andere Eingabe erhalten kann, irgendwelche Ideen?Eingabefeld nach der Eingabe von Daten zurücksetzen

html

<ion-view hide-nav-bar="true"> 
    <ion-content class="padding"><br> 

    <label class="item item-input"> 
     <input type="number" ng-model="code" id="code" name="theInput" auto-focus> 
    </label> 

    <div class="tt"><br><br> 
     Code : <span class="art">{{code}}<br><br></span> 
    </div><br> 

    <button ng-click="clear(code)" class="button button-positive"> 
    Clear 
    </button> 
    </ion-content> 
</ion-view> 

js

.controller('PriCtrl', function($scope) { 

    window.onload = function() { 
     document.getElementById("code").focus(); 
    }; 


    $scope.clear= function(code){ 

    $scope.val = code; 

    document.getElementById("code").value = ''; 

} 
+0

Sendet der Scanner ein "Return" -Zeichen am Ende der Eingabe (normalerweise)? Wenn dies der Fall ist, wird das Formular gesendet, so dass Sie dem Formular ein 'ng-submit' hinzufügen können, um' $ scope.code' zu ​​lesen, etwas damit zu tun und es dann auf leer zurückzusetzen. – Rhumborl

Antwort

0

nur eine Zeile ändern

$scope.clear= function(code){ 
$scope.val = code; 
$scope.code = ''; //ng-model of input is code 
} 
0

Sie darüber, wie Winkeldaten lesen soll Bindung arbeitet

Wenn eine Variable in ist die sc Die Ansicht kann darauf zugreifen. Wenn Sie den Variablenwert ändern, wird die Ansicht auf der Controllerseite automatisch aktualisiert und umgekehrt.

sollten Sie vermeiden so viel mit jQuery, wie Sie können und Manipulation DOM von der Steuerung wie folgt aus:

`document.getElementById("code").value = '';` 

ist streng die gleiche wie $scope.code = '';


dies ein Plunker ist: http://plnkr.co/edit/u3loqpxYIBMX65O9FXGD?p=preview

Ich werde ein Array erstellen, um den Eingang

zu speichern

js:

var app = angular.module('app', []); 

app.controller('MainCtrl', function($scope) { 

    $scope.selected = [] ; 
    $scope.code = null ; 
    $scope.next = function(){ 
    $scope.selected.push($scope.code); 
    $scope.code = null 

    } 
}); 

HTML:

<body ng-controller="MainCtrl"> 

<ion-view hide-nav-bar="true"> 
    <ion-content class="padding"><br> 

    <label class="item item-input"> 
     <input type="number" ng-model="code" id="code" name="theInput" auto-focus> 
    </label> 

    <div class="tt"><br><br> 
     Code : <span class="art">{{code}}<br><br></span> 
    </div><br> 

    <button ng-click="next()" class="button button-positive"> 
     scan next 
    </button> 
    </ion-content> 
</ion-view> 

<pre>{{selected|json}}</pre> 


</body> 
+0

es ist ok, aber gibt es eine Möglichkeit, es ohne Knopf zu automatisieren? etwas wie: Nummer skaliert - Nummer speichern, löschen(); – Mark

+0

ja sicher, siehe @ C14L Antwort. Ihr Scanner füllt die Eingabe allein? – AlainIb

+0

ja, funktioniert nicht von seinem Rat – Mark

0

In Angular, nie versuchen, wie diese document.getElementById("code").value = ''; tun etwas.

Sie können einfach die code Variable für Änderungen beobachten, und wenn sie einen neuen Wert erhält, kopieren Sie sie in eine Werteliste und löschen dann den Wert von code.

.controller('PriCtrl', function($scope) { 
    $scope.$watch('code', function(newVal, oldVal) { 
     if (newVal != '') { 
      $scope.codelist.push(newVal); 
      $scope.code = ''; 
     } 
    }); 
} 
Verwandte Themen