2017-07-04 1 views
1

versuchen, einen einfachen Rechner zu machen, aber einige Probleme haben. So kann ich nicht den Eingangswert mit der Tastatur füllen, ich habe auch zwei Fehler ([ngModel: nonassign], wenn ich die Seite zu laden, und wenn ich versuche, mit der Tastatur zu füllen den Eingangswert -angularjs Eingabe füllen Problem

dies. $$ ngModelSet ist keine Funktion

ich hoffe jemand kann mir helfen.

<div class="container" ng-controller="calcCtrl"> 
    <div class="content"> 
    <br><br><br> 
    <input type="text" ng-model="formula.join('')" ></input> 
    <br><br><span class="content_tab tab"></span> <br> 
    <button ng-click='add(7)'>7</button> 
    <button ng-click='add(8)'>8</button> 
    <button ng-click='add(9)'>9</button> 
    <button ng-click='add("/")'>/</button> 
    <br> 
    <button ng-click='add(4)'>4</button> 
    <button ng-click='add(5)'>5</button> 
    <button ng-click='add(6)'>6</button> 
    <button ng-click='add("*")'>*</button> 
    <br> 
    <button ng-click='add(1)'>1</button></td> 
    <button ng-click='add(2)'>2</button></td> 
    <button ng-click='add(3)'>3</button></td> 
    <button ng-click='add("-")'>-</button></td> 
    <br> 
    <button ng-click='add(0)'>0</button> 
    <button ng-click='add(".")'>.</button> 
    <td rowspan='2'><button ng-click='add("+")'>+</button> 
    <button ng-click="eval()">=</button> 
    <br> 
    <button ng-click="remove()">CLEAR</button> 
</div> 

app.controller('calcCtrl', function($scope) { 
    $scope.formula = ['0']; 
    $scope.add = function(item) { 
    if ($scope.formula == '0') $scope.formula = [item]; 
    else $scope.formula.push(item); 
}; 
    $scope.remove = function() { 
    $scope.formula.pop(); 
    if($scope.formula.length == 0) $scope.formula = ['0']; 
}; 
    $scope.eval = function() { 
    var result = eval($scope.formula.join('')); 
    $scope.formula = [result]; 
}; 

    }); 

Antwort

1

Sie diesen Fehler erhalten, weil Sie keine Variable zuweisbare in ng-Modell gelegt hat. So ng-model="formula.join('')" ändern zu uns ea Variable: zB: ng-model="total"

und in Ihrem Controller, für jede Berechnung, weisen nur diese Variable auf formula.join ('')

$scope.add = function(item) { 
    if ($scope.formula == '0') $scope.formula = [item]; 
    else $scope.formula.push(item); 
    $scope.total = $scope.formula.join(''); 
    }; 
    $scope.remove = function() { 
    $scope.formula.pop(); 
    if ($scope.formula.length == 0) $scope.formula = ['0']; 
    $scope.total = $scope.formula.join(''); 
    }; 
    $scope.eval = function() { 
    var result = eval($scope.formula.join('')); 
    $scope.formula = [result]; 
    $scope.total = $scope.formula.join(''); 
    }; 
+0

ich meinen Code zu, dass sich geändert, aber es funktioniert nicht richtig funktionieren, obwohl , jetzt ist es wie 2 verschiedene Werte in Tab, ich meine, wenn ich etwas über die Tastatur eingeben, den Wert, der dort durch Tasteneingabe war, verstecken und zeigen Sie mir den Wert (Tastatur), wenn ich Tasten wieder ändern und Wert zeigen mit buttonsm entschuldigen Sie für gebrochenes Englisch, ich hoffe, Sie verstehen, was ich meinte – shoopik

+0

Blick auf diese PLNKR und sagen Sie mir, was wollen Sie von dort http://plnkr.co/edit/Ab1XEIRHcDOk1WJbWKMJ?p=preview – Fetrarij

+0

ok, versuchen Sie es einzugeben Eingabe w ith Tastatur etwas wie "123" und tippen Sie einige Taste (zum Beispiel 567) und Sie sehen 567 in das Eingabefeld, ich will, dass nicht in zwei differents Feld teilen, hoffe, du hast meine Gedanken)) – shoopik