问题
When i try to remove Child object i am getting an error
TypeError: ctrl.otsact.tests.splice is not a function
HTML :
<tr ng-repeat="act in ctrl.otsact.tests" ng-if="ctrl.editToggle">
<td><span ng-click="ctrl.removeOTSACT(act.id)"> Delete </span></td>
</tr>
Script : i am suing splice to remove the child object form json object
function removeOTSACT(index) {
ctrl.otsact.tests.splice(index, 1);
}
Json Object
{
"ACT":{
"name":"ACT",
"tests":{
"73":{
"id":73,
"official_test_id":1,
"student_id":165888,
"test_date":"2017-05-12",
"score":"0.0",
"created_at":"2017-05-23 13:50:40",
"created_by_id":2766,
"updated_at":"2017-05-23 13:50:40",
"updated_by_id":2766,
"subjects":[
{
"id":1,
"official_test_id":1,
"student_id":165888,
"official_test_subject_id":1,
"score":1,
"student_score_id":73,
"name":"English",
"is_consider":1
},
{
"id":2,
"official_test_id":1,
"student_id":165888,
"official_test_subject_id":2,
"score":1,
"student_score_id":73,
"name":"Math",
"is_consider":1
},
{
"id":3,
"official_test_id":1,
"student_id":165888,
"official_test_subject_id":3,
"score":1,
"student_score_id":73,
"name":"Reading",
"is_consider":1
},
{
"id":4,
"official_test_id":1,
"student_id":165888,
"official_test_subject_id":4,
"score":1,
"student_score_id":73,
"name":"Science",
"is_consider":1
},
{
"id":5,
"official_test_id":1,
"student_id":165888,
"official_test_subject_id":5,
"score":1,
"student_score_id":73,
"name":"Writing",
"is_consider":0
}
]
},
"74":{
"id":74,
"official_test_id":1,
"student_id":165888,
"test_date":"2017-05-12",
"score":"0.0",
"created_at":"2017-05-23 13:50:40",
"created_by_id":2766,
"updated_at":"2017-05-23 13:50:40",
"updated_by_id":2766,
"subjects":[
{
"id":1,
"official_test_id":1,
"student_id":165888,
"official_test_subject_id":1,
"score":2,
"student_score_id":74,
"name":"English",
"is_consider":1
},
{
"id":2,
"official_test_id":1,
"student_id":165888,
"official_test_subject_id":2,
"score":2,
"student_score_id":74,
"name":"Math",
"is_consider":1
},
{
"id":3,
"official_test_id":1,
"student_id":165888,
"official_test_subject_id":3,
"score":2,
"student_score_id":74,
"name":"Reading",
"is_consider":1
},
{
"id":4,
"official_test_id":1,
"student_id":165888,
"official_test_subject_id":4,
"score":2,
"student_score_id":74,
"name":"Science",
"is_consider":1
},
{
"id":5,
"official_test_id":1,
"student_id":165888,
"official_test_subject_id":5,
"score":2,
"student_score_id":74,
"name":"Writing",
"is_consider":0
}
]
}
}
}
}
What i am doing wrong in the above script
thanks.
回答1:
This is an object not an array, so you can't splice it. Change this:
ctrl.otsact.tests.splice(index, 1);
to this:
delete ctrl.otsact.tests[index];
回答2:
In your JSON representation, ctrl.otsact.ACT.tests is not an array. If you can change the JSON so that "tests" is an array then splice will work.
来源:https://stackoverflow.com/questions/44203137/angularjs-remove-a-child-object-from-json-object