5

Sono nuovo di Angular e sto cercando di fare qualcosa di veramente semplice. Ecco una parte di una vista (tutti i file angolari vengono aggiunti altrove):

<div ng-controller='ctrl'> 
    <input type='text' ng-model='id'> 
</div> 

E qui è il mio controller:

module.controller('ctrl',['$scope', function ($scope) { 

    // get the scope value here 
}]); 

Quello che sto cercando di fare è davvero semplice. Mi piacerebbe usare il valore di input. Ho provato qualcosa come $scope.data = [] e $scope.data.push($scope.id) per creare un array con il valore dell'oscilloscopio, ma non ha funzionato. Quando ho provato a visualizzare il valore, ho ottenuto un 'indefinito' sulla console.

Avete qualche idea?

Modifica: la vista ha anche un pulsante con la direttiva ng-click che attiva la funzione del controller dove cerco di ottenere il mio valore.

+3

hai digitato nulla nel 'input'? – tymeJV

+0

Scrivo qualcosa e (non l'ho scritto sul post originale) Ho un pulsante, con una direttiva 'ng-click' collegata a una funzione nel controller. – Arhyaa

+0

Modifica il titolo della domanda in modo che indichi il problema che stai affrontando, "Sto solo provando a fare alcune cose di base con il ngModel di AngularJS" non mi dice nulla. Non chiederei ai tuoi genitori "Sto cercando di cucinare un po 'con un fornello" ... "Ok, qual è la domanda? Cosa stai cucinando? Qual è il problema?". – Jonast92

risposta

10

Il valore verrà aggiunto automaticamente a $scope, ma è necessario digitare qualcosa nell'elemento input.

Detto questo, è necessario attivare qualcosa per ottenere questo valore. Ad esempio, dove hai il tuo commento // get the scope value here - questo viene attivato non appena il controller viene inizializzato e non viene mai più chiamato; quindi, accederà a undefined in quel momento. Tuttavia, se si imposta un clic del pulsante, o qualcosa del genere, si vedrà che è disponibile:

<div ng-controller='ctrl'> 
    <input type='text' ng-model='id'> 
    <button ng-click="logId()">Log ID</button> 
</div> 

E il controller:

module.controller('ctrl',['$scope', function ($scope) { 
    $scope.logId = function() { 
     console.log($scope.id); 
    } 
}]); 

Ora digitare qualcosa nell'ingresso e fare clic sul pulsante.

+0

Hmm, mio ​​male, ho dimenticato di dirlo.Ho un pulsante sulla vista, con una direttiva 'ng-click' collegata a una funzione nel controller per attivarla. Lo aggiungerò al post originale! – Arhyaa

+0

Puoi fornire un [jsBin] (http://jsbin.com) o [jsFiddle] (http://jsfiddle.net) che non funziona? Il codice che ho fornito funziona bene: http://jsbin.com/wuhiciwibi/1/edit?html,js,console,output @Arhyaa – Tom

+0

Passaggio da 'angular.min.js' a' angular.js' nel menu principale vista, e ha funzionato. – Arhyaa

0

Se si ha realmente bisogno in ordine, solo fare questo nel controller:

$scope.data = [0];

e in HTML fare <input type="text" ng-model="data[0]">

sarà riempire quel valore di matrice automaticamente durante la digitazione qualcosa in INPUT, id sarà sempre in prima posizione nell'array.

Oppure si può gestire con oggetto In regolatore: $scope.data = {};

in HTML <input type="text" ng-model="data.id">

Problemi correlati