2016-04-04 13 views
0

wenn ich versuche, den Wert eines Eingabefeldes in meinem Controller zu bekommen es ist immer undefiniert, es ist wie die AngularJS zwei bindenden scheinen nicht, wie der Wert eines Eingabefeldes in AngularJS Controller zu bekommen

Arbeits dies der AngularJS Code

app.controller('MainCtrl', $scope) 
    { 
     var quan = $scope.quantity; 
     alert(quan); 
    } 

die html

<form ng-controller="MainCtrl" class="form-inline" role="form" padding-left:10em"> 

     <input type="text" class="form-control" id="quantity" ng-model="quantity" /> 

    </form> 

ich kann nicht den Wert des Eingangs in meinem Controller erhalten. Danke in fortgeschrittenem!

Antwort

0

Zuerst ist Ihre Syntax falsch, siehe hadiJZ Antwort. Zweitens wird der Controller nach der Erstellung einmal aufgerufen. Wenn Sie den Text anschließend ändern, wird die Warnung nicht mehr angezeigt.

+0

Also wie kann ich den Wert in der Steuerung bekommen? –

+0

Das hängt davon ab, woher Sie den Wert erhalten. Wenn die Originaldaten im Rahmen ist, könnten Sie eine Uhr verwendet werden: $ scope $ Uhr ('Wert', function (changedValue, previousValue) { ... etwas mit changedValue });. Die Uhr wird ausgelöst, wenn sich der Wert innerhalb des Bereichs $ ändert. Ein saubererer Ansatz wäre die Verwendung von ng-change, obwohl dies nur funktioniert, wenn Sie nur ein bestimmtes Element (in Ihrem Fall das Eingabefeld) haben, das in den Wert schreibt, oder alle Elemente die Änderungsfunktion aufrufen. –

0

Wenn Sie dies zu Ihrem Controller hinzufügen, wird jedes Mal eine Warnung angezeigt, wenn Sie den Eingabewert ändern.

$scope.$watch(function() { 
     return $scope.quantity; 
    }, function(quantity) { 
     alert(quantity); 
    }); 
0

Ich fand einen Ansatz, der für mich funktioniert.

dies ist die Winkel

$scope.changedValue = function (item,quan) 
    { 

     if (item != null && quan !=null) 
     { 

      $http.get('/api/product/'+ item).success(function (data) 
      { 

       $scope.amount = parseFloat(data.price * quan); 

      }); 

     } 
    } 

und das ist die html

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
<div ng-app="myApp" ng-controller="myCtrl"> 
    <form class="form-inline" > 

     <input type="text" class="form-control" id="quantity" ng-model="quantity" /> 
     <select class="form-control" id="selected_id" ng-model="selected_id" ng-options="c.Value as c.Text for c in pcategoryA" 
             ng-change="changedValue(selected_id,quantity)"> 
    </form> 
</div> 
0

Um den Wert eines Feldes von AngularJS zu bekommen, würden Sie brauchen, ID-Set auf sie wie diese haben:

In AngularJS, dies zu tun, den Wert zu erhalten:

$ scope.RandomValue = angle.element ('# RandomValue'). val();

Verwandte Themen