2016-08-04 3 views
0
ändern

Hallo ich bin neu zu angularjs Ich frage mich, ob es möglich war, Zeug, das bereits in der Ansicht von JSON geladen wurde, zurück zum Controller zu senden. Was ich versuche zu tun ist, die Briefe zurück zu einem Controller zu senden und einen Weg zu erstellen, um über sie mit einem intervale zu iterieren, dann den Stil jedes Controllers ändern, jetzt bin ich fest, weil ich das ng-Modul = nicht bekommen kann "single" zurück in den Intervall-Controller NamenWie Controller aus Sicht mit Json in angularjs

hier ist die Ansicht

<!DOCTYPE html> 
<html lang="en-us" ng-app="App"> 
<body ng-controller="mainController" ng-click="textArea = textArea + 1"> 
     <div ng-controller="clickController"> 
<div class="container"> 

      <div ng-controller="intervalController"> 

       <ul class="general_button"ng-repeat="letter in language[0].rows"> 
        <button type="button" ng-model="single += single" class="btn btn-info" ng-repeat="single in letter"> 
         {{single}} 
        </button> 
       </ul> 

       <div > 

        <h1 ng-mousemove="textArea = textArea + 1">Mouse over me!</h1> 

        <label for="inputlg">input-lg</label> 
        <input class="form-control input-lg" id="inputlg" type="text" value="{{ textArea }}"> 
       </div> 

      </div> 
     </div> 


    </div> 
    </body> 
</html> 

hier sind die Controller

var App = angular.module('App', []); 
var theLanguage = 'english'; 
App.controller('mainController', function($scope, $http,$log) { 
    $http.get(theLanguage + '.json') 
     .then(function(res){ 
      $scope.language = res.data;     
     }); 
$log.debug('Hello Debug!'); 
}); 

App.controller('intervalController', function($scope, $log) { 
    this.$log = $log; 
    var name = $scope.single; 

    $log.log(name); 
    $log.log('Hello World!'); 

}); 

App.controller('clickController', function($scope) { 

}); 

und hier ist die Json

[{ 
    "rows":[[ 
     "a", 
     "e", 
     "u", 
     "i", 
     "o", 
     "y" 
    ], 
    [ 
     "b", 
     "c", 
     "d", 
     "f", 
     "g" 
    ], 
    [ 
     "h", 
     "i", 
     "j", 
     "k", 
     "l" 
    ], 
    [ 
     "m", 
     "n", 
     "p", 
     "q", 
     "r" 
    ], 
    [ 
     "s", 
     "t", 
     "v", 
     "w", 
     "x z" 
    ] 
]}] 

Vielen Dank im Voraus für Ihre Hilfe irgendwelche Vorschläge, wie dies zu tun wäre, wäre ein besserer Weg auch geschätzt.

Antwort

1

Es ist eine schlechte Idee zu versuchen, ng-model und ng-repeat auf demselben Element zu setzen. Du hast das Modell schon, Brief. Der Brief ist an die Ansicht gebunden, so dass alles, was der Benutzer im Brief ändert, im Controller zugänglich ist. Sie sollten nur

ng-model="single += single" 

der Lage sein, zu entfernen und dann Interate über Brief in der Steuerung:

angular.forEach($scope.letter, function(single) { 
    //do something with single 
}); 
+0

ich das Hinzufügen angular.forEach versucht ($ scope.letter, Funktion (single) { $ log. Protokoll (einzeln); }); aber es schien nicht zu funktionieren –