2016-09-25 2 views
1

Ich habe eine einfache verschachtelte JSON in meine HTML-Datei eingebettet, die ich einige Daten dynamisch mit Hilfe von Formular einfügen möchte.Angularjs - nicht in der Lage, Kinder Elemente dynamisch zu schieben

Ich kann Daten in die übergeordnete Ebene einfügen, aber nicht in untergeordnete Ebene einfügen. Was mache ich falsch? Hier

ist der Code:

<div class="container" ng-app="myApp" ng-controller="myCtrl"> 
     <label>Enter Data</label> 
     <input ng-model="name" type="text"> 
     <input ng-model="rollno" type="number"> 
     <input ng-model="id" type="text"> 
     <button ng-click="addData(data)">Enter Data</button> 
     <table class="table table-bordered"> 
      <tr> 
       <th>Sr No</th> 
       <th>Name</th> 
       <th>Roll No</th> 
       <th>Subjects</th> 
       <th>Delete</th> 
      </tr> 
      <tr ng-repeat="data in myData"> 
       <td>{{$index+1}}</td> 
       <td>{{data.name}}</td> 
       <td>{{data.rollno}}</td> 
       <td ng-repeat="subject in data.subjects">{{subject.id1}}, {{subject.id2}}</td> 
       <td><a href="" ng-click="removeData($index)">remove</a></td> 
      </tr> 
     </table> 
     </div> 
     <script> 
      var app = angular.module('myApp',[]); 
      app.controller('myCtrl',function($scope){ 
       $scope.myData =[{"name":"Jon","rollno":123,"subjects":[{"id1":"Maths","id2":"Hindi"}]},{"name":"Ron","rollno":234,"subjects":[{"id1":"English","id2":"Hindi"}]}]; 
       $scope.addData = function(data){ 
        $scope.myData.push({name:$scope.name,rollno:$scope.rollno,id1:$scope.id1}); 
       } 
       $scope.removeData = function(index){ 
        $scope.myData.splice(index, 1); 
       } 
      }); 
     </script> 
+0

Was meinst du mit Eltern und Kind Ebene hinzufügen? Sprechen Sie über JSON-Daten? Bitte geben Sie ein Beispiel, wie Sie gerne haben möchten? – forethought

+0

Ich habe diese Daten mit mir - {"name": "Jon", "rollno": 123, "Themen": [{"id1": "Mathe", "id2": "Hindi"}]}, {" name ":" Ron "," rollno ": 234," Themen ": [{" id1 ":" Englisch "," id2 ":" Hindi "}]}. Jetzt möchte ich eine weitere Zeile mit Name als Sharon, RollNo als 345, Id1 als Geschichte hinzufügen. Da sich Id1 und Id2 jedoch in der Child-Ebene befinden, kann ich sie nicht in meine Tabelle einfügen. – user3719049

+0

Sie haben nicht angezeigt, wo die Funktion addData aufgerufen wurde, und "data" wurde nicht verwendet. Wenn Sie jedoch "Subjekte" einfügen möchten, können Sie etwas wie var newSubjects = [{id1: 'History', 'id1': 'English'}]; $ scope.myData.push ({name: 'newData', rollno: 'newRollno', Themen: newSubjects}); – user1111

Antwort

0

Wenn Sie Themen versuchen, so gut einfügen addData mit Funktion können Sie die unten tun können. In html diese ng-Modelle

<input ng-model="name" type="text"> 
    <input ng-model="rollno" type="number"> 
    <input ng-model="id" type="text"> 
    <input ng-model="subid1" type="text"/> 
    <input ng-model="subid2" type="text"/> 

In js

  $scope.addData = function(data){ 
     var arrData = {name:$scope.name,rollno:$scope.rollno,subjects:[{id1:$scope.subid1,id2:$scope.subid2 }]}; 
     $scope.myData.push(arrData); 
    } 
+0

Danke Ranjith, das hat mit Charme funktioniert! – user3719049

+0

Ich habe noch eine Frage. Es gibt dieses jsfiddle - http://fiddle.jshell.net/jonhartmann/xd7e5eha/. Wie füge ich dynamische untergeordnete Elemente mithilfe von Formular hinzu? Angenommen, ich habe eine Texbox mit der Schaltfläche und auf js habe ich "name: $ scope.name" anstelle von "name: 'Child' + count" . Ich möchte Benutzereingabe Kindnamen. – user3719049

+0

Sie können ng-submit im Formular verwenden, um es einzureichen –

Verwandte Themen