2015-02-03 18 views
9

Ho una stringa contenente dati Json che viene generata da qualche altro script (diciamo script A). Devo accedere a questi dati usando ng-model. Quindi quello che ho provato è che ho creato un campo di input come sotto e collegato ad esso.Accesso ai dati del modello ng nel controller usando angularjs

`<input type="text" id="check" name="jsonName" ng-model="saveJson"></input>` 

Ora quello che ho fatto è che ho memorizzato i dati JSON in questo campo di input che utilizzano script di Una come qui di seguito

document.getElementById("check").value = saveJson; 

Ora per accedere a questi dati in angolare ho creato un controller come

angular.module('myapp').controller('formDataController', ['$scope', 
    function($scope){ 
     $scope.saveForm = function(){ 
      console.log($scope.saveJson); 
     } 
    } 
]); 

dove SaveForm è un metodo che si chiama su un pulsante di scatto utilizzando ng clic

Ora il problema è ntil c'è un'interazione nel campo di input $ scope.saveJson fornisce un valore undefiend. Ma quando scrivo qualcosa nel campo di input, console.log mostra i dati JSON con valore digitato.

Per favore aiuto.

+0

si deve sempre impostare la variabile portata come '$ scope.saveJson = saveJson' dalla variabile portata controller.setting fuori angolare non lo farà esegui il ciclo di digest, la variabile scope non aggiornerà..è necessario '$ scope. $ apply()' per ottenere il valore aggiornato di tutte le variabili di scope –

+0

come dovrei usare questo $ scope. $ apply() – Himanshu

+0

che potresti usare 'if (! $ scope. $$ phase) $ scope. $ apply()' ma questo è un codice cattivo in termini di angolare '. –

risposta

2

Beh è necessario definire $ scope.saveJson come proprietà all'interno il controller

angular.module('myapp').controller('formDataController', ['$scope', 
function($scope){ 
$scope.saveJson = "something";  
$scope.saveForm = function(){ 
     console.log($scope.saveJson); 
    } 
} 
]); 
Problemi correlati