AngularJS:基于$ resource的提交/回滚模型

时间:2014-09-26 22:14:46

标签: angularjs angular-ngmodel ngresource

我试图找到一个通用解决方案来提交/回滚模型和ng-resource。

何时提交/保存模型:

  1. 成功的http写入方法(PUT,POST,PATCH)。
  2. 何时回滚/重置模型:

    1. http写入方法失败。
    2. 用户决定取消其本地更改(在PUT之前)。
    3. 我发现这个解决方案的碎片分散了,但没有全面的策略。

      我最初的策略是使用默认的ng-resource缓存。控制器从GETting项开始。如果后续的PUT / POST / PATCH失败(在控制器的承诺或$资源中捕获。< write_method>' s interceptor.responseError,重新运行首先得到的GET对象,并用初始加载替换我的模型。然而,如果有一个成功的PUT,然后是一个失败的PUT,这没有帮助,因为我正在用我的模型替换我的模型当用户在提交之前尝试取消其表单更改时,会出现同样的问题...最后一次成功的GET可能是陈旧的。

      我有一个包含~10个属性的模型,以及多个< form> s(用于html / design的缘故),它们都与这个在任何一个表单上获得PUT的对象进行交互提交:

      {'location_id': 1234,
       'address': {
         'line1': '123 Fake St'}
          ...
       },
       'phone': '707-123-4567',
       ...
      }
      

      模型已经具有很好的回滚功能,但是获取ng-resource来触摸它们似乎很棘手,我真的想要重置整个对象/模型。在我的$ resource实例旁边使用自定义缓存似乎是一种不错的方式,但同样难以为用户交互提供回滚方式。另一个想法是在加载到范围时存储一个单独的对象:$scope.location = respData; $scope._location = angular.copy(respData);我可以通过$scope.location = $scope._location;从想要回滚时加载,但我真的不想让我混乱站点范围内的控制器与这些阴影对象/功能(DRY)。

0 个答案:

没有答案