Restangular put() 不适用于多个 put()

Restangular put() not working on multiple put()'s

这是有问题的代码

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() 调用无法正常工作,有人知道为什么吗?

Restangular 对元素的 this 绑定做了一些棘手的事情(请参阅 Copying elements 了解另一个有问题的场景)。 问题很可能出在您的通话 angular.extend(category, data); 中。此调用复制所有可枚举属性(包括 Restangular 方法),同时更新元素的字段(例如 id、名称、日期)就足够了。

最简单的解决方案是使用响应的 plain() 功能。此函数 returns 您收到的纯数据对象,因此您可以使用它专门复制您的数据字段。

category.put().then(function (data) {
            console.log(data.parent_id);
            delete category._updating;
            angular.extend(category, data.plain());
            updateCategories();
        });