Javascript AngularJS文件结构、指令和控制器耦合:指令应该使用外部控制器吗?
比如说,我需要在我的网站上添加一个类似于StackExchange提供的标签功能:我有一个填充了选定标签的输入栏,当我键入某个内容时,会出现一个建议列表。相当标准的东西 我会这样做:Javascript AngularJS文件结构、指令和控制器耦合:指令应该使用外部控制器吗?,javascript,angularjs,controller,angularjs-directive,file-structure,Javascript,Angularjs,Controller,Angularjs Directive,File Structure,比如说,我需要在我的网站上添加一个类似于StackExchange提供的标签功能:我有一个填充了选定标签的输入栏,当我键入某个内容时,会出现一个建议列表。相当标准的东西 我会这样做: 创建标记模块 添加使用服务获取标记的标记控制器,并声明方法,如addTag,removeTag,findSimilarTags,…-->i、 e.它使用$scope模型数据 添加一个指令,该指令带有一个指定my Tag module布局的模板,其中包含调用控制器方法的方法,例如add(),remove() 通过
- 创建标记模块
- 添加使用服务获取标记的标记控制器,并声明方法,如
,addTag
,removeTag
,…-->i、 e.它使用findSimilarTags
模型数据$scope
- 添加一个指令,该指令带有一个指定my Tag module布局的模板,其中包含调用控制器方法的方法,例如
,add()
李>remove()
add()
内部调用addTag()
)和来自代码其他部分的事件(例如,当发生事件时,内部调用addTag()
的观察者)
总之:
- 控制器:处理来自模型的数据(使用服务的电动汽车)
- 指令:处理DOM操作和事件,使用控制器执行实际工作
这有意义吗?为什么要将指令与控制器完全分离?指令是否应该更“智能”并直接处理数据?指令顾名思义。。它们用于对数据进行一些操作并将其发送回控制器。。它与函数非常相似。指令用于更好的代码模块化。。它从控制器中删除非结构化代码。Ya指令也可以直接处理数据,但它不会被通知