AngularJS 用于分离视图组件的指令或控制器

AngularJS Directive or Controller to seperate views components

我正在努力学习 AngularJS (1.5) 我已经理解了过滤器和服务的概念,并且我也理解了控制器和指令背后的逻辑。但是当我开始编写我的第一个应用程序时,我无法区分是否应该将视图组件拆分为控制器或指令。例如,我有一个如下页面;

<navigation-bar>
  <menu></menu>
  <search-box></search-box>
</navigation-bar>
<content>
  <comments>
    <comment></comment>
    <comment></comment>
    <comment></comment>
  </comments>
</content>

现在,我正在使用 templateUrl 为每个组件创建控制器,这种方法是否正确,还是我应该创建指令?如果我应该创建指令,我应该如何管理评论部分,该部分将使用从服务收集的数据重复每条评论。为重复内容创建 CommentsController 和 Comment 指令是否正确?

提前致谢

你们中的第一个应该了解指令和控制器。
指令:- 使用自定义属性和元素扩展 HTML。
控制器:- 视图背后的业务逻辑。

因此,如果您只需要编写业务逻辑,那么您可以在控制器中编写,如果您想访问服务数据,则在控制器中注入服务。
我是controller,可以写保存数据的逻辑,可以写渲染逻辑,然后是数据处理和处理逻辑。对于这样的逻辑,不需要自定义指令。

但是是的,当您必须自定义视图时,您应该使用自定义指令。
例如
- 假设您想在表单中显示选择小部件。
- 如果您想查看任何字段的详细信息,或者如果您想显示特定字段的自定义视图,那时候使用自定义指令。

在你的情况下,

<navigation-bar>
  <menu></menu>
  <search-box></search-box>
</navigation-bar>
<content>
  <comments>
    <comment></comment>
    <comment></comment>
    <comment></comment>
  </comments>
</content>

在上面的代码中创建 HTML 并将其与控制器一起使用,但如果您想削减搜索框或评论,则只需为此添加自定义指令,否则无需使用自定义指令。