0

如果我有一个对象

DS.defineResource({
    name : 'parent',
    relations : {
        hasMany : {
            child : {
                localField : 'children',
                foreignKey : 'parentId'
            }
        }
    }
})
DS.bindOne('parent', 1, $scope)

我对孩子的属性进行了更改parent.children[4].name='joey',如何将该更改包含在 a 中save

$scope.parent.DSSave();

我怎样才能做到这一点?

4

1 回答 1

0

这在 JSData 2.x 中不起作用的原因是关系 getter 是不可枚举的,因此在记录被序列化并发送到适配器时不会被选中。您必须手动构建有效负载以将关系发送到适配器:

const payload = {};
Object.keys(parentRecord).forEach((key) => payload[key] = parentRecord[key]);
payload.childRecords = parentRecord.childRecords;
DS.update('parent', parentRecord.id, payload)

在 JSData v3 中,它会是这样的:

store.update('parent', parentRecord.id, { with: ['childRecords'] })
于 2016-10-21T16:31:34.743 回答