以下是有问题的代码
function putCategory(category) {
console.log(category.parent_id);
category.put().then(function (data) {
console.log(data.parent_id);
delete category._updating;
angular.extend(category, data);
updateCategories();
}, function (error) {
delete category._updating;
category.errors = readError(error);
});
}
以下是该问题的简要示例:
当我检查控制台日志时,输入数据是正确的(第一个控制台日志),第二次控制台日志第一次是正确的,第二次(以及之后)是错误的。
当我查看网络选项卡时,我可以看到传出的参数第一次也是正确的,第二次也是错误的。
所以我可以说,put()调用无法正常工作,有没有人知道为什么?
答案 0 :(得分:2)
Restangular通过元素的this
绑定做了一些棘手的事情(对于另一个有问题的场景,请参阅Copying elements)。
问题很可能出在您的电话angular.extend(category, data);
中。此调用复制所有可枚举属性(包括Restangular方法),同时更新元素的字段(例如id,name,date)就足够了。
最简单的解决方案是使用响应的plain()
功能。此函数返回您收到的纯数据对象,因此您可以使用它来专门复制数据字段。
category.put().then(function (data) {
console.log(data.parent_id);
delete category._updating;
angular.extend(category, data.plain());
updateCategories();
});