在放入angularjs时,对象字段变为null

时间:2015-02-27 23:06:17

标签: angularjs angular-resource

我遇到了一个奇怪的问题,当我使用angular $ resource执行PUT时,新添加的对象的字段变为null。数据是一堆嵌套对象。当用户将列表项拖到另一个列表时,该项将被推送到数据中的关联对象,并提示用户添加“注释”。之后,“评论”字段会正确更新。现在,如果用户按下“保存”按钮,我会执行PUT来更新后端上的对象。刷新页面时,将显示新添加的对象,但其注释字段为空。我在PUT之前查看了数据,并且仍然按预期填充了“注释”字段,但是当我在Chrome中查看PUT XHR时,“注释”字段为空。奇怪的是,当添加这样的新对象时,会填充许多字段,例如“注释”字段,但只有“注释”字段变为空。我希望有人可以向我解释一下。以下是一些示例代码:

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?
}
]

这是我的$资源调用:

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'
            }
        })

    };
});

1 个答案:

答案 0 :(得分:1)

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