Javascript angularjs中的双向绑定问题

Javascript angularjs中的双向绑定问题,javascript,jquery,json,angularjs,Javascript,Jquery,Json,Angularjs,我在HTML+AngularJs上弄得手忙脚乱。我被一个奇怪的问题缠住了。 我使用ng repeat创建表tr和td,迭代json数据,并使用json对象属性“name”在输入类型文本中填充值。现在,当我在输入框中输入时,ng模型得到更新,但如果我在JSON属性中使用一个预先填充的值尝试它,或者我尝试动态填充JSON属性,它不会更新 <table style="border:1px solid black" ng-repeat="node in tableJson" id="tab

我在HTML+AngularJs上弄得手忙脚乱。我被一个奇怪的问题缠住了。 我使用ng repeat创建表tr和td,迭代json数据,并使用json对象属性“name”在输入类型文本中填充值。现在,当我在输入框中输入时,ng模型得到更新,但如果我在JSON属性中使用一个预先填充的值尝试它,或者我尝试动态填充JSON属性,它不会更新

    <table style="border:1px solid black" ng-repeat="node in tableJson" id="tableId">
        <tr  style="border:1px solid black" ng-repeat=" rowNode in node">
            <td style="border:1px solid black" ng-repeat="columnNode in rowNode">

            <div ng-repeat="obj in columnNode">


                {{obj.name}}
                <span ng-click="addRow($parent.$index,$index);">add row</span></br>
                <span ng-click="addColumn();">add column</span></br>
                <span ng-click="hideMeShowNext();">hide me</span>
                id: {{$parent.$parent.$index}}_{{$parent.$index}}_{{$index}}
                <input type="text" ng-model="obj.name">{{obj.name}}

                <table style="border:1px solid black" ng-repeat="node in obj.newTable" id="tableId">
                    <tr  style="border:1px solid black" ng-repeat=" rowNode in node">
                        <td style="border:1px solid black" ng-repeat="columnNode in rowNode">

                            <div ng-repeat="obj in columnNode">
                                <span ng-click="addRow($parent.$index,$index);">add row</span></br>
                                <span ng-click="addColumn();">add column</span></br>
                                <span ng-click="hideMeShowNext();">hide me</span>
                                id: {{$parent.$parent.$index}}_{{$parent.$index}}_{{$index}}
                                <input type="text" ng-model="obj.name">{{obj.name}}
                            </div>  
                        </td>
                    </tr>   
                </table>    

            </div>  
            </td>
        </tr>   
</table>
这是预定义的JSON

$scope.addRow =function(parentIndex,index){
//add a tr to the container table


alert(parentIndex + "--"+index);

var objToPush = [
  {
    "rowNode": [
      {
        "columnNode": [
          {
            "name": ""
          }
        ]
      }
    ]
  }
];
$scope.tableJson[0]["rowNode"][parentIndex]["columnNode"][index]["name"]="justFilled";
$scope.tableJson[0]["rowNode"][parentIndex]["columnNode"][index]["newTable"] = objToPush;

$scope.$apply();
}
addRow是我正在调用的函数


我做错了什么?>

最好的建议可能是从一个不包含太多嵌套的简单测试用例开始,然后将一个空对象推送到数组中。一旦你找到了简单的例子,就把你学到的应用到更深层次的嵌套对象$scope上。$apply在那里是不必要的(但是删除它不会解决你的问题)。我相信您应该像charlietfl所说的那样:从一个较小的嵌套结构开始,并一点一点地扩展它,您将发现mistake@charlietfl我试过了,在页面上打印了{{obj}}。它似乎得到了更新,但ng repeat没有更新。我正在努力。我一得到答案就会更新。
$scope.addRow =function(parentIndex,index){
//add a tr to the container table


alert(parentIndex + "--"+index);

var objToPush = [
  {
    "rowNode": [
      {
        "columnNode": [
          {
            "name": ""
          }
        ]
      }
    ]
  }
];
$scope.tableJson[0]["rowNode"][parentIndex]["columnNode"][index]["name"]="justFilled";
$scope.tableJson[0]["rowNode"][parentIndex]["columnNode"][index]["newTable"] = objToPush;

$scope.$apply();
}