工厂中的AngularJS持久对象

时间:2014-05-27 16:29:58

标签: javascript angularjs

我只是在想我的想法。我无法理解下面的代码是如何工作的。

我有一个工厂,里面有一个名为" products"和其他名为" order"。两种方法,一种称为" list()"返回"产品"属性,和其他名为" orderList()"返回" order"。此外,它有一个名为" add()"获得"产品"来自"产品"列出并填充"命令"在工厂内列出。之后,我有两个控制器和两个列表。一个控制器可用于产品("产品"属性)和其他用于购物车("订单"属性)。

在每个控制器的开头,我有$ scope.productsList = Product.list(),另一个是$ scope.productsOrder = Product.orderList()。

产品从产品列表开始。订单开始为空。那是完美的。

当我点击+1时,这两个更改为" order"名单。并且不知道为什么。

这是代码: http://codepen.io/anon/pen/lFLbH

1 个答案:

答案 0 :(得分:5)

我相信您在询问为什么产品清单和购物车中的金额都会发生变化。如果是这样,我的回答是给你的。它是基本的JavaScript-您在内存中引用相同的对象,因此它在两个视图中都会更新。为避免这种情况,您可以在将对象添加到购物车之前复制该对象。

更改将对象添加到购物车的行以制作对象的副本。

 order[product.slug] = angular.copy(newProduct);