【问题标题】:Using save or put with Restangular results in "undefined" being included in URL使用带有 Restangular 的 save 或 put 会导致 URL 中包含“未定义”
【发布时间】:2015-07-28 14:42:45
【问题描述】:

我正在使用 Restangular 下载一个对象,对其进行更新,然后尝试使用save 方法将其保存回服务器。下面是检索对象的代码:

Restangular.one("survey", surveyID).getList().then (
  function (response) {
    $scope.survey = response[0];
  }
);

这会将$scope.survey 设置为正确“重新调整”的对象,其中包含从 GET 请求返回的字段以及saveput 等方法。

如果我在对 $scope.survey 对象进行一些编辑后调用以下函数:

$scope.saveChanges = function () {
  $scope.survey.save();
};

restangular 尝试将 URL /survey/1/undefined 用于 PUT 请求(1 是对象的正确 ID)。

我的survey 对象没有id 字段(而是surveyID),所以我怀疑这可能是问题所在。但是,将 surveyID 字段替换为 id 字段会将 URL 更改为 /survey/1/undefined/1

我已将 GET 请求返回的对象剥离为原语,这并没有改变这种情况。

为什么会生成不正确的路由?

【问题讨论】:

    标签: restangular


    【解决方案1】:

    II 发现问题实际上出在 REST 服务上;当使用GET /surveys/1 调用时,它返回一个包含单个对象的array,而不是返回对象本身。

    我认为这导致 restangular 认为正在访问一个集合(请注意,我必须调用 getList 而不是 get 才能获得正确重新调整的对象)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-12
      相关资源
      最近更新 更多