【发布时间】:2014-07-07 14:11:03
【问题描述】:
假设我需要向我的网站添加类似于 StackExchange 提供的标签功能:我有一个输入栏,其中填充了选定的标签,当我输入内容时,会出现一个建议列表。很标准的东西。
我会做以下事情:
- 创建标签模块
- 添加一个标签控制器,它使用服务来获取标签,并声明像
addTag、removeTag、findSimilarTags、.. --> 即它使用$scope模型数据 - 添加一个带有模板的指令,该模板指定我的标签模块的布局,以及调用控制器方法的方法,例如
add(),remove(), ..
这样我可以区分来自用户的事件(例如 add() 在内部调用 addTag())和来自代码的其他部分(例如在发生某些事情时内部调用 addTag() 的观察者)。
总结:
- 控制器:处理来自模型的数据(例如使用服务)
- 指令:处理 DOM 操作和事件,使用控制器完成实际工作
这有意义吗?为什么Google 将指令与控制器完全分开?指令是否应该更“智能”并直接处理数据?
【问题讨论】:
标签: javascript angularjs controller angularjs-directive file-structure