何时克隆角度数据对象?

时间:2017-12-14 15:37:19

标签: angular design-patterns angular-services

他们的任何Angular规则/最佳实践是关于何时克隆服务返回的对象。

在所有组件上共享相同的数据对象引用可能会导致意外行为(例如:使用对象引用的基于模板的表单可能会在提交之前导致对象属性更改)

2 个答案:

答案 0 :(得分:1)

您需要在克隆对象时克隆对象。

一个好的做法是拥有无状态服务:它们应该只执行操作,但没有变量。这意味着你到处都没有相同的参考。

你当然可以提供一两个州的服务,但我的意思并不是每一个都是。

此外,当您进行http调用时,不会对您提取的对象使用相同的引用:每次拨打电话时,都会创建一个新对象。

这是回答你的问题吗?

答案 1 :(得分:0)

全部取决于您是否可以向服务器提交可能已经过时的数据。

示例:

您即将对拍卖网站上的某个商品出价,最后一次出价为5美元。所以,你即将提交6美元。但是,在您点击提交之前,有人已经出价7美元。

在上面的例子中,将您的出价与服务器上的最后一次出价进行比较是一件好事。如果您的出价较低,则会停用提交按钮。 (不是克隆)

否则,您的提交会点击竞价网站并以您的代码/表单必须处理的错误退回。您不必发送到服务器的请求。的(克隆)

处理错误可能比不断更新表单更容易。但是,当前出价更新时,用户体验会更好。

简而言之,如果您克隆数据,您的状态可能会失去同步。有了这样的说法,就有用于克隆数据的用例,例如当数据无法按原样使用并需要进一步操作时。