角度形式 - 仅发送已更改的字段

时间:2013-05-16 13:04:41

标签: angularjs

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

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

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

我考虑过不使用HTML form并收集数据并自己创建ajax请求,但后来我将失去验证机制(适用于Angular-UI验证)。

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

有什么想法吗?

2 个答案:

答案 0 :(得分:17)

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

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

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

答案 1 :(得分:6)

在Angular文档中,有一个示例包含ng-copy以实现重置功能。<​​/ p>

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

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

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