2016-09-25 6 views
1

フォームを使用していくつかのデータを動的に挿入するHTMLファイルに単純なネストされたjsonが埋め込まれています。Angularjs - 子アイテムを動的にプッシュすることができません

親レベルにデータを挿入できますが、子レベルに挿入することはできません。私が間違っていることは何ですか?ここで

はコードです:

<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

あなたが親と子のレベルとはどういう意味ですか? JSONデータについて話していますか?あなたの好きな例を挙げてください。 – forethought

+0

私はこのデータを私と一緒に持っています - {"name": "Jon"、 "rollno":123、 "subjects":[{"id1": "数学"、 "id2": "ヒンディー語}}}}、{" "Ron"、 "rollno":234、 "subjects":[{"" id1 ":"英語 "、" id2 ":"ヒンディー語 "}]}今度は、NameをSharon、RollNoを345、Id1をHistoryとして使用してもう1つの行を追加したいとします。しかし、Id1とId2は子レベルにあるため、テーブルに挿入できません。 – user3719049

+0

関数addDataが呼び出された場所を表示せず、 'データ'も使用しませんでした。しかし、 '科目'を挿入したい場合は、var newSubjects = [{id1: 'History'、 'id1': '英語'}]のようにすることができます。 $ scope.myData.push({name: 'newData'、rollno: 'newRollno'、subjects:newSubjects}); – user1111

答えて

0

あなたは以下を行うことができますは、addData機能を使用して、同様の被験者を挿入しようとしている場合。 HTMLでは、これらのNG-モデルを追加

<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"/> 

で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

Ranjithありがとう、これは魅力的でした! – user3719049

+0

もう1つ質問があります。このjsfiddle - http://fiddle.jshell.net/jonhartmann/xd7e5eha/があります。フォームを使用して動的な子アイテムを追加するにはどうすればよいですか?私はボタンを持つtexboxを持っていて、jsでは "name: 'Child" + count "の代わりに" name:$ scope.name " 。私はユーザーの入力子の名前が欲しい。 – user3719049

+0

フォームにng-submitを使用して送信することができます –

関連する問題