放入 angularjs 时对象字段变为空

Object field becomes null while doing a put in angularjs

我 运行 遇到了一个奇怪的问题,当我使用 angular $resource 进行 PUT 时,新添加对象的字段变为空。数据是一堆嵌套对象。当用户将列表项拖到另一个列表时,该项目将被推送到数据中的关联对象上,并提示用户添加 'Comments'。之后, 'Comment' 字段被正确更新。现在,如果用户按下 'Save' 按钮,我将执行 PUT 以更新后端的对象。当页面刷新时,新添加的对象出现了,但是它的comments字段为空。我查看了 PUT 之前的数据,'Comments' 字段仍按预期填充,但是当我在 Chrome 中查看 PUT XHR 时,'Comments' 字段为空。奇怪的是,当添加这样的新对象时,会填充许多字段,例如 'Comments' 字段,但只有 'Comments' 字段变为空。我希望有人能给我解释一下。这是一些示例代码:

DnD操作前的原始对象:

myData = [
  {
    Field1: 'Data',
    Field2: 'Data',
    Comments: 'Data',
  }
  {
    // More objects like this
  }
]

DnD 之后:

[
  {
    Field1: 'Data',
    Field2: 'Data',
    Comments: 'Data',
  },
  {
    // More objects like this
  },
  {
    Field1: 'Data',
    Field2: 'Data',
    Comments: 'New comments',
  }
]
MyService.http.update({
                    data1ID:myData.data1ID,
                    data2ID: myData.data2ID
                }, myData).$promise.then(function() { // Here the Comments field is still populated


                    myData.isDirty = false;
                };

在 PUT XHR 中,我在美化后看到了这个:

    [
{
 Field1: 'Data',
 Field2: 'Data',
 Comments: 'Data',
},
{
// More objects like this
},
{
 Field1: 'Data',
 Field2: 'Data',
 Comments: null, // What gives?
}
]

这是我的 $resource 调用:

angular.module('myApp').factory('MyDataService', function ($resource, $window) {

    return {

        http: $resource(myUsualURLForGETsANDPOSTs, {
            data1ID: '@data1ID',
            data2ID: '@data2ID',
            data3ID: '@data3ID'
        }, { //parameters default
            update: {
                url: myPUTURL,
                method: 'PUT'
            },
            get: {
                method: 'GET'
            },
            post: {
                method: 'POST'
            }
        })

    };
});

我想通了。我误读了 Chrome 中的 XHR 数据。该字段实际上不是空的,但确实填充了预期的数据。 return 数据有空字段。换句话说,我们在后端遇到了问题,它没有正确保存所有正在发送的字段并且对 PUT 的响应很糟糕。