Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS文件结构、指令和控制器耦合:指令应该使用外部控制器吗?_Javascript_Angularjs_Controller_Angularjs Directive_File Structure - Fatal编程技术网

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

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() 通过

比如说,我需要在我的网站上添加一个类似于StackExchange提供的标签功能:我有一个填充了选定标签的输入栏,当我键入某个内容时,会出现一个建议列表。相当标准的东西

我会这样做:

  • 创建标记模块
  • 添加使用服务获取标记的标记控制器,并声明方法,如
    addTag
    removeTag
    findSimilarTags
    ,…-->i、 e.它使用
    $scope
    模型数据
  • 添加一个指令,该指令带有一个指定my Tag module布局的模板,其中包含调用控制器方法的方法,例如
    add()
    remove()
通过这种方式,我可以区分来自用户的事件(例如,
add()
内部调用
addTag()
)和来自代码其他部分的事件(例如,当发生事件时,内部调用
addTag()
的观察者)

总之:

  • 控制器:处理来自模型的数据(使用服务的电动汽车)
  • 指令:处理DOM操作和事件,使用控制器执行实际工作

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

指令顾名思义。。它们用于对数据进行一些操作并将其发送回控制器。。它与函数非常相似。指令用于更好的代码模块化。。它从控制器中删除非结构化代码。Ya指令也可以直接处理数据,但它不会被通知