我正在创建一个使用带有角度的设置Web API的Web客户端。 有很多设置,它们都是可选的。如果我发送设置,则应保存。未发送的设置不应更改。
要求所有设置都有一个保存更改按钮。
我想知道Angular中是否有某种方法可以实现这一点。
我考虑过不使用HTML form
并收集数据并自己创建ajax请求,但后来我将失去验证机制(适用于Angular-UI验证)。
我考虑过将表单拆分为小表单并仅提交ng-dirty
不是假的表单,但如果某些请求失败(这违反了要求),这可能会导致部分保存。
有什么想法吗?
答案 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