0

我有两个自定义日期选择指令

一个用于一天 一个用于选择范围

每个中大约 50% 的代码是重复代码(主要是用天填充月份并选择一天),如果不是很相似的话。我试图尽可能保持干燥,但在弄清楚如何解决这个问题时遇到了问题。

选项 1 我最初的想法是拥有一个日历服务,它可以保存一些可以在任一指令中使用的共享功能?这被认为是不好的约定吗?

选项 2 否则我想有一个日历 E 指令,其中包含所有 html/初始值,例如给定月份中的天数和更改月份的能力。然后创建两个 A 指令,为每个执行功能?

选项 3 ?????

我觉得我可以快速解决选项 1,它会起作用。选项 2 对我来说听起来像是一个更优雅的解决方案,我宁愿编写一些性感优雅的代码(这似乎有点愚蠢。) - 但最后我更愿意采用最好的方法。

选项 3,如果您有其他想法,我会全力以赴

4

2 回答 2

1

我认为最好的方法是使用Services共享逻辑。

对于指令行为,您应该使用嵌套指令。

于 2015-12-31T19:13:37.400 回答
1

这里最好的方法是隔离 50% 的代码(或尽可能多地)并将其放入服务或工厂。我个人更喜欢服务。

app.service("ServiceName", function(injectors, ...)
{
   // code
})

然后设置您的指令以使用控制器(不是链接),并将该服务注入控制器:

...
controller: function($scope, ServiceName, $otherInjectors ...)
{
  // call your ServiceName.methods() as needed
}
...

另一种选择是在现有控制器上使用 angular.extend ,但我认为这对于您想要做的事情可能有点矫枉过正......这基本上是将您的 2 个几乎相同的指令简化为基本逻辑(服务),然后是特定于 UI个别控制器中的东西。

希望有帮助!

于 2015-12-31T19:17:48.880 回答