AngularJS文件结构,指令和控制器耦合:指令应该使用外部控制器吗?

时间:2014-07-07 14:11:03

标签: javascript angularjs controller angularjs-directive file-structure

假设我需要添加一个类似于StackExchange提供给我网站的标签功能:我有一个填充了所选标签的输入栏,当我输入一些建议列表出现时。非常标准的东西。

我会做以下事情:

  • 创建标记模块
  • 添加使用服务提取标记的标记控制器,并声明addTagremoveTagfindSimilarTags,...等方法。即它使用$scope模型数据
  • 使用指定我的Tag模块布局的模板添加指令,使用调用控制器方法的方法,例如add()remove(),..

通过这种方式,我可以区分来自用户的事件(例如add()内部调用addTag())和代码的其他部分(例如内部调用addTag()的观察者发生)。

总结:

  • controller:处理模型中的数据(例如,使用服务)
  • 指令:处理DOM操作和事件,使用控制器执行实际工作

这有意义吗?为什么Google将完全指令与控制器分开?指令应该更“智能”并直接处理数据吗?

1 个答案:

答案 0 :(得分:0)

名称暗示的指令。它们用于对数据进行一些操作并将其发送回控制器。它非常类似于函数。指令用于更好的代码模块化。它从控制器中删除非结构代码。 Ya指令也可以直接处理数据,但它没有被评估。