我搜索了很多设计模式,但没有发现如何实现将在某些控制器和html标记中使用的函数。我真的想要逃避复制粘贴功能,所以这就解决了问题。
我将一些物品存储在localStorage中作为一系列权利,每个物品都有价格,数量和折扣。将该数组称为购物车。在某个页面中,我需要将价格总和插值为“总价”。这就是“购物车显示页面”,它基本上是购物车中的商品列表。另一方面,我有一个带有表格的“订单页面”,其中还应显示总价。假设这个页面是用两个不同的控制器操作的:OrderController和CartController,我在这两个控制器中都有一个名为calculatePrice的函数,它返回总和,然后在order.html和cart.html中的html内插入。
所以它发生了我已经做了一些复制粘贴。如果(在不久的将来可能)我有另一个需要此功能的控制器/视图,我将再次进行复制粘贴。
我对此的看法:
1)创建$ rootScope函数calculatePrice并在控制器和视图中使用它。不受欢迎,不希望在我的应用程序的“运行”周期中插入过多的命令性代码
2)为实用程序函数创建一个服务,将它注入控制器内部,并且只有声明式样式,如'$ scope.someFunction = service.someFunction'
3)创建一个服务,将其注入app.run函数并将其连接到rootScope
但我不认为这是对的。我想找到最可能的清洁解决方案。
答案 0 :(得分:0)
我认为你可以创建一个工厂,因为它只被实例化一次并将你的函数放在那里并在需要时将它注入控制器并将所需的函数分配给$ scope对象中的变量,因为任何html视图都应链接到一个控制器。我强烈建议您遵循一些着名开发人员的angularjs风格指南规则,试试这个我相信它是最好的。
style guild for angularjs 1& style guide for angularjs 2