我正在编写一个在客户端使用 MVC 的 Flex 应用程序。它使用 GraniteDS,因此具有远程延迟加载和反向延迟加载功能。
用户登录到应用程序,然后单击一个按钮来更新他们的电子邮件地址。然后调用控制器,但我不确定接下来按哪个顺序执行操作。我可以看到以下选项:
选项
- 在客户端更新模型,然后将更新发送到服务器。如果服务器抛出错误,则告诉用户并要求他们重新加载 Flex 应用程序,因为数据现在不同步。否则假定更新正常;
- 控制器将数据发送到服务器,服务器响应后,控制器使用更新的数据更新客户端模型。如果没有收到服务器响应,则告诉用户出现错误并要求他们重新加载应用程序,因为数据现在可能不同步。
选项 2 似乎更好,但我不确定如何实现它。我有哪些选择?
解决方案
- 克隆MyUser并将克隆发送到服务器,当服务器返回MyUser然后更新模型。您将如何处理MyUser集合中更深的嵌套对象,因为克隆只会复制原始集合而不克隆它?
- 将MyUser.id与更改的数据一起发送到服务器。使用id在服务器上加载MyUser,然后修改其数据。一旦他们的数据在服务器上被修改,然后将MyUser返回给客户端,以便控制器可以更新他们的模型。
解决方案 2 似乎是一种非常糟糕的方法,因为它绕过了延迟/反向延迟加载的 GraniteDS 功能。
他们是这样做的最佳实践方式吗?