AngularUI:为什么modal没有作为指令实现?

时间:2014-09-12 18:56:37

标签: angularjs angular-ui-bootstrap

我在项目中使用angular-ui,我想实现一个模态窗口。库的大多数组件(http://angular-ui.github.io/bootstrap/)都是作为指令实现的(如预期的那样)。但是,模态不是 - 它是作为服务实现的。这导致对控制器中视图的强烈依赖(即控制器需要知道视图使用模态窗口,不应该是这种情况)。

我的问题是:为什么modal实现为服务,而不是指令?它有什么好处吗?

1 个答案:

答案 0 :(得分:1)

$modal指令非常灵活,它的API支持:

  • 在您想要的任何事件上触发,因为控制器控制它何时打开。
  • 使用resolve选项
  • 将数据从控制器传递到对话框中的控制器
  • 使用对话框中的任何控制器或模板。
  • 通过result承诺将数据从靠近触发控制器的对话框传回来。

虽然并非不可能将这一切都放在指令中,但我认为只能通过使用许多选项或复杂的对象来实现这一点,而这些选项或控件必须在控制器中构建。

这不是指令的另一个原因是指令通常用于页面中特定位置的事物。它的设计模式没有附加到页面中的任何元素。

我建议尝试为指令设计一个API,它提供与$modal相同的功能,我怀疑它会显示使用服务总的来说更清晰,而且可能更灵活。