什么是AngularJS指令?
我花了很多时间阅读AngularJS文档和几个教程,我对文档的难以接近感到非常惊讶。
我有一个简单的可回答的问题,对于希望获取AngularJS的其他人也可能有用:
什么是AngularJS指令?
应该有一个简单的,精确的指令定义,但AngularJS网站提供了这些令人惊讶的无用定义:
在主页上:
指令是AngularJS中独有的强大功能。 指令让你发明新的HTML语法,特定于你的应用程序。
在开发者文档中:
指令是教导HTML新技巧的一种方法。 在DOM编译期间,指令会与HTML进行匹配并执行。 这允许指令注册行为或转换DOM。
具有讽刺意味的是,有一系列关于指令的讨论似乎假定观众已经了解它们是什么。
任何人都可以为清楚的参考提供一个准确的定义:指令是什么解释的:
它是什么(以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事件的地方。 这就是为什么指令的编译和链接函数都接收“元素”作为参数的原因。 您可以
在HTML中,我们有诸如
<a href="...">
, <img src="...">
, <br>
, <table><tr><th>
。 你会如何描述什么是a,href,img,src,br,table,tr和th? 这是一个指令。 也许一个非常简单的初始定义的角度指令会是
AngularJS指令(ng-directives)是带有ng前缀(ng-model,ng-app,ng-repeat,ng-bind)的HTML属性,用于Angular扩展HTML。 (来自:W3schools角度教程)
这将是一些例子
ng-app指令定义了一个AngularJS应用程序。
ng-model指令将HTML控件的值(input,select,textarea)绑定到应用程序数据。
ng-bind指令将应用程序数据绑定到HTML视图。
<div ng-app="">
<p>Name: <input type="text" ng-model="name"></p>
<p ng-bind="name"></p>
</div>
查看本教程,至少对我来说这是Angular最好的介绍之一。 更完整的方法将是@ mark-rajcok之前所说的一切。
查看文档,指令是您可以编写的结构,以便创建对象和行为。angularjs可以解析这些结构。换句话说,它是一个模板,您可以在其中混合使用任意节点和伪javascript和占位符来表示数据的意图您的小部件(组件)是结构化的,它的行为如何以及它如何与数据一起提供。 然后Angularjs运行这些指令将它们转换为可用的html / javascript代码。
指令在那里,所以你可以使用适当的语义来构建更复杂的组件(小部件)。 只要看一下指令的angularjs例子 - 它们正在定义标签窗格(这在常规HTML中当然不是有效的)。 它比直接使用div-s或span来创建结构更直观,然后将样式设计为标签窗格。
链接地址: http://www.djcxy.com/p/89607.html