【问题标题】:Using directives in real life angular app, are directives with controllers a right approach?在现实生活中的角度应用程序中使用指令,带有控制器的指令是正确的方法吗?
【发布时间】:2015-03-09 08:31:12
【问题描述】:

我知道这个话题已经讨论过很多次了,但我仍然不太确定我做的是否正确..

许多在线资源将指令作为 Angular 应用程序的构建块,同时许多资源强调组件的可重用性。无论如何,从我构建典型应用程序的经验来看,没有太多东西可以重用,通常每个组件都有一个角色,并且在一个地方使用。据我了解,主要概念之一是提供语义 DOM,为了实现这一点,我们可以使用指令。因此,当我构建一个 Angular 应用程序时,我通常会创建一组指令并将它们组合到视图中。

在我的应用程序中,大多数情况下,所有 DOM 操作都可以使用 build in 指令完成。我的大部分指令都有一个模板和一个控制器,我不需要使用链接功能。在互联网上的大多数资源中,我可以读到在创建指令时我应该使用链接功能。但这似乎是复杂得多的代码......如果我不需要超出内置指令的任何花哨的 DOM 操作,链接函数有什么好处?

tldr;我使用带有控制器的指令构建我的应用程序并将它们放入视图中,这是正确的方法吗?

【问题讨论】:

  • 你可能首先想到的一个快速的事情是你是否需要公开你的 API,如果是使用控制器,如果没有使用链接。
  • 嗨@elaijuh,是的,我读到了。我不需要公共 API。问题是为什么?当我使用控制器时,我的代码就不那么复杂了。如果我不需要超出内置指令的任何花哨的 DOM 操作,链接函数有什么好处?
  • 控制器本身是一个 $provide 保存在cacheProvider 中,这意味着它可以在任何地方注入。链接函数不能被注入,仅适用于特定指令的操作。另一个需要考虑的事情是,如果控制器只为这个特定的指令做生意,尽量不要让这种设计发生。
  • $provider 的事情似乎只是一个理论上的问题,我没有看到太多的后果。关于业务逻辑 - 正如我之前所说,我不做任何超出范围的 DOM 操作内置指令。但我确实看到了具有语义 DOM 的 html 模板的好处(通过使用内置指令)。也许我不完全理解角度概念,我应该坚持视图而不是指令?
  • 您能否进一步说明您正在构建的内容?你的困惑是把东西放在链接或控制器中吗?

标签: angularjs angularjs-directive


【解决方案1】:

一年多以来,我一直在 Angular 中开发企业级应用程序,如果您多次使用同一个元素,我的团队已经遵循了创建指令的标准。它节省了时间,避免了 DOM 的麻烦,并且可以轻松地创建单独的、可测试的代码片段。

我们为许多使用 ng-repeat 的列表项创建了指令。几乎我们拥有的每一个 ng-repeat 都在迭代一个指令,以在我们元素的功能中创建真正的隔离范围。如果处理得当,它是 AngularJS 中最强大的功能之一,并且符合面向对象编程的标准,您可以真正让您的应用程序最大限度地使用抽象。 Here's a wiki link on abstraction.

【讨论】:

    猜你喜欢
    • 2015-06-07
    • 2015-01-29
    • 1970-01-01
    • 2017-10-25
    • 2013-01-22
    • 1970-01-01
    • 2015-07-05
    • 2015-07-20
    • 1970-01-01
    相关资源
    最近更新 更多