我正在创建一个Web客户端,它使用带有角度的设置Web API.有很多设置,它们都是可选的.如果我发送设置,则应保存.未发送的设置不应更改.
要求是为所有设置设置一个" 保存更改"按钮.
我想知道Angular中是否有某种方法可以实现这一点.
我想过不使用HTML form
并收集数据并自己创建ajax请求,但后来我将失去验证机制(这与Angular-UI验证工作良好).
我考虑将表单拆分为小表单并仅ng-dirty
提交不是false 的表单,但如果某些请求失败(这违反了要求),这可能会导致部分保存.
任何的想法?
r4w*_*173 17
您可以在提交之前检查表单或任何命名字段是否已修改.如果表单有名称,您的输入名称如下:
<form name="myForm">
<input name="input1">
</form>
Run Code Online (Sandbox Code Playgroud)
在控制器中,你将有机会获得对象$scope.myForm
和$scope.myForm.input1
,和这些对象将有一个$dirty
属性,如果初始值是由用户修改这是真的.
在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