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