当前位置: 首页 > 面试题库 >

什么是AngularJS指令?

章琛
2023-03-14
问题内容

我花了很多时间阅读AngularJS文档和一些教程,对于文档的难懂性,我感到很惊讶。

我有一个简单的,可以回答的问题,对于其他希望使用AngularJS的人也可能有用:

什么是AngularJS指令?

某个地方应该有一个简单,精确的指令定义,但是AngularJS网站提供了这些令人惊讶的无用定义:

在主页上:

指令是AngularJS中可用的独特而强大的功能。指令可让您发明特定于您的应用程序的新HTML语法。

在开发人员文档中:

指令是教授HTML新技巧的一种方式。在DOM期间,编译指令将与HTML匹配并执行。这允许指令注册行为或转换DOM。

具有讽刺意味的是,有一系列关于指令的讨论,似乎是在假定读者已经理解了它们是什么。

任何人都可以提供什么是指令的精确定义以供参考:

  1. 它是什么(请参阅jQuery的清晰定义作为示例)
  2. 打算解决哪些实际问题和情况
  3. 它体现了什么设计模式,或者如何适合AngularJS的MVC / MVW任务。

问题答案:

它是什么(请参阅jQuery的清晰定义作为示例)?

指令本质上是一个函数†,当Angular编译器在DOM中找到它时执行。函数几乎可以执行任何操作,这就是为什么我认为定义指令是相当困难的原因。每个指令都有一个名称(如ng-
repeat,tabs,make-up-your-own),每个指令都确定可以在何处使用它:元素,属性,类,注释中。

†指令通常仅具有(后)链接功能。复杂的指令可以具有编译功能,预链接功能和后链接功能。

打算解决哪些实际问题和情况?

指令可以做的最强大的事情就是扩展HTML。您的扩展名是用于构建应用程序的领域特定语言(DSL)。例如,如果您的应用程序运行在线购物网站,则可以将HTML扩展为具有“购物车”,“优惠券”,“特殊商品”等指令-
不论“单词”,“对象”或“概念”在“在线购物”域,而不是“ div”和“ span”(如@WTK所述)。

指令还可以将HTML组件化-将一堆HTML分组为一些可重用的组件。如果您发现自己使用ng-include引入了大量HTML,则可能是时候重构为指令了。

它体现了什么设计模式,或者它如何适应angularjs所谓的MVC / MVW任务

指令是您操作DOM并捕获DOM事件的地方。这就是指令的compile和link函数都将“ element”作为参数接收的原因。您可以

  • 定义一堆HTML(即模板)来替换指令
  • 将事件绑定到此元素(或其子元素)
  • 添加/删除课程
  • 更改text()值
  • 监视在同一元素中定义的属性的更改(实际上监视的是属性的值-这些是作用域属性,因此该指令监视“模型”的更改)
  • 等等

在HTML中,我们有类似的事情<a href="..."><img src="..."><br><table><tr><th>。您将如何描述a,href,img,src,br,br,table,tr和th是什么?这就是指令。



 类似资料:
  • 问题内容: AngularJS指令的默认作用域值是什么? 当然,它不是孤立的范围。这是对还是错。 我找不到有关它的任何文档。 问题答案: “请注意,默认情况下,伪指令不会创建新的作用域-即,默认值为” 从理解范围。 使用指令中的scope选项,您可以: 创建一个原型继承的子范围 创建一个独立的作用域,然后您可以将某些属性绑定到父作用域。 决定不创建新的作用域,并使用父级(默认)。

  • 问题内容: 我一直在做很多工作,总的来说,我发现它是一个有趣而强大的框架。 我知道关于服务,工厂,提供者,价值的讨论很多,但是我对“什么是”仍然很困惑。 在其他StackOverflow讨论中,工厂定义如下: 工厂名称 语法:结果:在将factoryName声明为可注入的参数时,将为您提供通过调用传递给module.factory的函数引用而返回的值。 我发现很难理解这种解释,也并没有增加我对工厂

  • 本文向大家介绍什么是JSP指令?,包括了什么是JSP指令?的使用技巧和注意事项,需要的朋友参考一下 JSP指令影响Servlet类的整体结构。它通常具有以下形式- 指令标记有三种类型- 序号 指令与说明 1 <%@ page ...%> 定义与页面相关的属性,例如脚本语言,错误页面和缓冲要求。 2 <%@ include ...%> 在翻译阶段包含文件。 3 <%@ taglib ...%> 声明

  • 所以我和一位面试官(你的标准人力资源经理)谈了他们在面试中真正想要的东西,他提到了一些关于测试JVM指令知识的东西(以及其他很多东西)。 我不知道那是什么,但我以为他说的是字节码指令。 我做了一些研究,似乎在“JVM指令”上找不到任何东西,我只找到了字节码指令的引用,我已经知道了字节码指令。 例如:http://docs.oracle.com/javase/specs/jvms/se7/html/

  • 问题内容: 等号后的问号有特殊含义吗?即: 上面的意思是“无法解决’foo’时不会引发错误?” 问题答案: 是: “隔离”范围采用对象散列,该对象散列定义了一组从父范围派生的局部范围属性。这些本地属性对于为模板的别名设置别名很有用。本地定义是本地范围属性与其源的哈希值: 或-在本地范围属性和通过属性值定义的名称的父范围属性之间建立双向绑定。如果未指定名称,则假定属性名称与本地名称相同。给定 和的窗

  • 问题内容: 我是AngularJS的新手,我无法理解AngularJS的功能。有人可以用最简单的方式来说明AngularJS中的功能以及我们可以使用它做什么。请以一种您完全不了解编程知识的方式向您解释。有人还能以最简单的方式逐行解释下面的代码吗? 问题答案: 每个控制器都有一个关联的对象。 控制器(构造函数)功能负责设置模型属性和功能。这只能通过$ scope来完成。无论您在View(HTML文件