2017-05-26 91 views
0

删除的子对象。当我试图删除子对象我得到一个错误Angularjs从JSON对象

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> 

脚本: 我起诉剪接删除的子对象形式json对象

function removeOTSACT(index) { 
    ctrl.otsact.tests.splice(index, 1); 
} 

Json对象

{ 
    "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 
       } 
      ] 
     } 
     } 
    } 
} 

什么,我在上面的脚本

感谢做错了。

+0

则可能需要使用拼接,如果你的变量是一个对象之前JSON.parse你的变量? –

回答

1

这是一个不是数组的对象,所以你不能拼接它。 更改此:

ctrl.otsact.tests.splice(index, 1); 

这样:

delete ctrl.otsact.tests[index]; 
0

在您的JSON表示中,ctrl.otsact.ACT.tests不是数组。如果您可以更改JSON,以便“测试”是一个数组,那么拼接将起作用。