2015-02-03 11 views
9

Ich habe eine Zeichenfolge, die JSON-Daten enthält, die von einem anderen Skript generiert werden (sagen wir Skript A). Ich muss auf diese Daten mit ng-Modell zugreifen. Also, was ich ausprobiert habe, ist, dass ich ein Eingabefeld wie unten erstellt habe und ng-Modell daran angehängt habe.Zugriff auf ng-Modelldaten im Controller mit angularjs

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

Nun, was ich habe ist ich die Json-Daten in diesem Eingabefeld gespeichert Skript A wie unten

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

nun in diese Daten zugreifen Winkel i wie

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

Dabei ist saveForm eine Methode, die bei einem Klick mit der Tastenkombination ng-klick

aufgerufen wird 0

Jetzt ist das Problem u ntil gibt es irgendeine Interaktion im Eingabefeld das $ scope.saveJson gibt einen undefiend Wert. Aber wenn ich etwas in Eingabefeld schreibe, dann zeigt console.log json Daten mit typisierten Wert.

Bitte helfen.

+0

sollten Sie immer Umfang Variable wie '$ scope.saveJson = saveJson' außerhalb Winkel von Ihrem controller.setting Umfang Variable definieren, wird nicht Führen Sie den Digest-Zyklus aus, die Scope-Variable wird nicht aktualisiert. Sie müssen '$ scope. $ apply()' ausführen, um den aktualisierten Wert aller Scope-Variablen zu erhalten. –

+0

Wie sollte ich diesen $ scope verwenden? $ apply() – Himanshu

+0

können Sie verwenden 'if (! $ scope. $$ Phase) $ scope. $ apply()' aber das ist schlechter Code in Bezug auf Winkel. ' –

Antwort

2

Nun müssen Sie $ scope.saveJson als Eigentum in Ihrem Controller

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