如果POST失败,如何在angular 2应用程序中恢复数据
我正在构建一个Angular 2应用程序,其中有双向绑定到变量的如果POST失败,如何在angular 2应用程序中恢复数据,angular,Angular,我正在构建一个Angular 2应用程序,其中有双向绑定到变量的输入字段(如用户名、电话号码)。用户更新字段并单击保存后,将向服务器发送POST请求。我的问题是,如果POST请求无法更新数据库,我应该如何恢复变量的值 我想到了两种方法: 无论保存成功与否,服务器都会在POST响应中返回该用户的当前状态,因此应用程序始终可以使用该状态。但是,如果服务器关闭,则不会返回任何状态 在Angular应用程序中,有一个存储以前状态的重复数据结构。如果post因任何原因失败,请使用该备份数据进行恢复。这总是
输入
字段(如用户名、电话号码)。用户更新字段并单击保存
后,将向服务器发送POST
请求。我的问题是,如果POST请求无法更新数据库,我应该如何恢复变量的值
我想到了两种方法:
谢谢 第一种方法听起来不错(因为您将始终获得实体的最新有效状态),但需要将此类实现添加到后端api的所有受影响端点,有时甚至可能无法访问源 您可以用一种简单的方式实现第二个选项,并且效果非常好——至少在大多数情况下是这样!因此,您可以使用say
profile
对象,它是数据库中的当前状态:
var profile = {'name': 'john', 'surname': 'smith', 'age': 30};
以及profileForm
,它是表单的双向绑定状态。在向用户展示表单之前,使用angular.copy
将原件复制到表单中:
var profileForm = {};
angular.copy(profile, profileForm);
如果POST
成功,则仅更新源对象:
profile = profileForm;
profileForm = null;
这样,不仅您永远不会丢失源对象,还可以将失败的值放在另一个值中,这样您就可以显示用户输入,并在服务器端执行验证错误。(例如用户名存在)
这总是有效的,但似乎有点浪费,因为它将存储空间增加了一倍
除非你在这些输入中存储了一些大屁股的用户名和电话号码,否则你在这里优化过度了。一些简单字符串的存储成本可以忽略不计——采用最有意义的方法(即生成最清晰、最可理解的代码),并且效果最好
仅考虑到您告诉我们的内容,IMHO这几乎肯定会是第二种方法:这是一种很好理解的模式,它回避了当服务器无法访问时该怎么做的问题(这个问题您必须回答,如果不实现第二种方法的某种形式,您将很难回答)
ng2没有任何明确用于此目的的“内置”功能,但有许多方法可以声明(首选)或强制实现它 这个问题是关于角度2的<代码>$scope是一个ng1构造,它(谢天谢地)在ng2中不存在。我误解了这个问题,但是正如你指出的,ng2显然没有为此提供内置功能,所以我的答案仍然是相关的,因为它是简单的js,并且足够通用,可以应用于任何一种情况。谢谢你的否决票!谢谢你的回复!你能详细介绍一下“声明式”和“命令式”方法吗?每种方法的优缺点是什么?谢谢@不客气!这是一个非常大,非常不同的问题。。。这是一个我真的很想回答的问题,但它绝对值得我提出自己的问题-请随意发布,我会在那里与您交谈:-)