【问题标题】:AngularJs controller and directive purpose, the right way?AngularJs 控制器和指令目的,正确的方法?
【发布时间】:2016-10-17 04:25:34
【问题描述】:

我一直在阅读有关 angularjs 指令和控制器的更深入的内容,其中一个应该是什么。情况是这样的,我在管理面板应用程序中有多个人,他们的类型 -> 警察、医学、律师……等等,管理员可以在其中管理他们。在一个部分中,管理员可以创建、编辑、删除它们。当前版本的控制器几乎完成了所有工作:UI(调出正确的表单,隐藏其他表单……)和逻辑(删除、创建、更新每种人员类型的方法)。据我了解,这不好,因为控制器做了很多事情(没有单一的责任)。更进一步,控制器应该只将值绑定到范围。

但这是否意味着,我应该只拉动所有的人(在控制器内)并传递一些主指令来管理这一切?或者他们应该在指令中更多的指令来划分责任?

如果是这样,控制器将不得不使用与指令/指令相同的服务。用于从后端拉人的控制器)和指令/指令(用于创建/更新/删除)是 DRY 吗?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    没有代码很难给出准确的答案,但使用 angular 时的总体思路是这样的:

    • 控制器:控制器负责使视图与整个应用程序中发生的所有更改保持同步。这意味着它应该包含业务逻辑,而应该将此逻辑分离为小服务。每个处理应用程序逻辑的不同部分。

    • 服务:如上所述,服务应包含您的业务逻辑。这意味着应该将繁重的计算、操作等放入服务中。由于服务是单例,您可以轻松地在任何地方注入此服务并重用其中的逻辑,如果您将逻辑放在控制器中,您将无法做到这一点。

    • 指令:与控制器一样,指令中不应包含任何业务逻辑。指令仅用于创建可重用的功能以及为您提供处理直接 DOM 更改的位置。 DOM 更改不应该在任何地方进行,只能在指令中进行。

    回答这个问题:

    如果是这样,控制器将不得不使用与指令/指令相同的服务。用于从后端拉人的控制器)和指令/指令(用于创建/更新/删除)是 DRY 吗?

    如果您将数据绑定到控制器,则不一定需要指令来处理 CRUD 操作。由于数据绑定到控制器,您可以轻松创建一个模板,使用ng-repeatng-if 等自动响应数据更改。

    【讨论】:

      猜你喜欢
      • 2013-01-22
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-22
      • 2013-03-15
      相关资源
      最近更新 更多