angularJs TypeError:将循环结构转换为JSON

 三十二号t娶我吧 发布于 2023-02-13 21:24

我有一个像我这样的小型AngularJs应用程序:

 // html

 

{{ project.id }}

{{ project.title }}

{{ task.id }}. {{ task.title }}

Create a New Task

Title:

Project:

// app.js concernsApp.factory('ConcernService', function ($http, $q) { ... update: function (obj_url, obj) { var defer = $q.defer(); console.log(obj) $http({method: 'POST', url: api_url + obj_url + obj.id + '/', data: obj}). success(function (data, status, headers, config) { defer.resolve(data); }).error(function (data, status, headers, config) { defer.reject(status); }); return defer.promise; }, }); concernsApp.controller('ProjectsCtrl', function ($scope, $http, ConcernService) { $scope.updateTask = function(obj) { ConcernService.update('tasks/', obj).then(function(){ ... } });

问题是更新任务并保持父项目不变.如果我更改父项目,一切正常.如果我使用相同的父项目,那么我得到:

TypeError: Converting circular structure to JSON

我不完全确定这里发生了什么.

编辑

所以,我可以解决这个问题:

$scope.updateTask = function(obj) {
    parentProject = {'id': obj.project.id};
    obj.project = parentProject;
    ConcernService.update('tasks/', obj).then(function(){
        ...
    });
}; 

这是有效的,因为我实际上只需要task.project.id更新对象.我认为问题是由于该任务引用了一个父项目,而该项目反过来引用了子任务等等.我对此并不完全确定.

但是,这个解决方案对我来说似乎有些苛刻,我希望看到更好的解决方案.

1 个回答
  • 在某处你试图将一个对象转换为JSON,并且在其中有一个循环引用,意思是这样的:

    var myObj = new Object();
    myObject.reference = myObj;
    

    现在尝试将其转换为JSON将失败,并产生您的错误.

    查看您编辑的帖子,您的数据结构如下所示:

    task.parent -> {project}
    
    project.tasks -> [{task1},{task2},...]
    

    这应该建模关系"项目有多个任务"和"任务属于一个项目".

    由于循环引用,现在显然不能转换为json格式.

    对于数据结构,为什么不选择:

    project = { "id": 42,
                "tasks": [123, 124, 127, ... ],
              }
    
    task = { "id": 123,
             "idproject": 42,
                ...
           }
    

    每当您必须在angularjs应用程序中显示关系时,您可以使用过滤器.如果要显示属于项目的内容,请按projectid过滤所有任务.

    或者通过请求后端对特定项目ID具有哪些任务,即时检索后端所需的数据.

    这是一种方法.当然,让后端接受适当的更新请求也会起作用,例如更新项目需要项目ID和一系列任务ID.

    2023-02-13 21:34 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有