9

我正在创建一个 Web 客户端,它与带有 Angular 的设置 Web API 一起使用。有很多设置,它们都是可选的。如果我发送设置,它应该被保存。未发送的设置不应更改。

要求是所有设置都有一个保存更改按钮。

我想知道 Angular 中是否有某种方法可以实现这一点。

我考虑过不使用 HTMLform并收集数据并自己创建一个 ajax 请求,但是我将失去验证机制(与 Angular-UI 验证一起工作得很好)。

我考虑过将表单拆分为小表单并仅ng-dirty提交不为假的表单,但是如果某些请求失败(这是违反要求的),这可能会导致部分保存。

任何想法?

4

2 回答 2

18

您可以在提交之前检查表单或任何命名字段是否被修改。如果表单有名称并且您的输入具有如下名称:

<form name="myForm">
   <input name="input1">
</form>

在控制器中,您将可以访问对象$scope.myForm和,如果用户修改了原始值$scope.myForm.input1,这些对象将具有一个为 true 的属性。$dirty

于 2013-10-11T12:26:18.440 回答
6

在 Angular 文档中,有一个示例涵盖了 ng-copy 以实现重置功能。

http://docs.angularjs.org/cookbook/advancedform

在提交期间,您可以将您的起始模型(主副本)与更改/提交的对象(更改副本)进行比较,并仅提交更改的项目(或仅删除相同/未更改的项目)。

使用http://blog.vjeux.com/2011/javascript/object-difference.html区分副本和主控 这需要额外的工作来处理数组。或转换为 JSON 并区分 JSON https://github.com/benjamine/JsonDiffPatch

于 2013-05-17T01:17:43.710 回答