Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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 绑定和指令之间的区别_Javascript_Angular - Fatal编程技术网

Javascript 绑定和指令之间的区别

Javascript 绑定和指令之间的区别,javascript,angular,Javascript,Angular,让我们以下面的例子为例。有两种向元素添加类的方法: 类绑定 <div [class]="currentClasses">Hello world #1</div> Hello world#1 类指令 <div [ngClass]="settings">Hello world #1</div> Hello world#1 类绑定和类指令在底层功能方面有什么区别?最初我认为绑定只是写入某个对象上的属性,但是HtmleElement上没有这样的属性

让我们以下面的例子为例。有两种向元素添加类的方法:

类绑定

<div [class]="currentClasses">Hello world #1</div>
Hello world#1
类指令

<div [ngClass]="settings">Hello world #1</div>
Hello world#1
类绑定和类指令在底层功能方面有什么区别?最初我认为绑定只是写入某个对象上的属性,但是HtmleElement上没有这样的属性
class
,它是
className
,所以这种推理可能是错误的。它当然不仅仅是向DOM元素添加了一个
class
属性,因为相同的语法用于将值绑定到组件类字段

这些问题也在我脑海中浮现:我可以实现自定义绑定吗?
[]
绑定背后使用了什么机制


我当然知道
ngClass
具有复杂的功能,比如跟踪组件类的属性,而
class
绑定只是添加类。但这个问题不是关于应用程序,而是关于它们如何在内部实现。

[class.xxx]
[attr.xxx]
[style.xxx]
是特殊的Angular2模板语法,由Angular2直接处理。 这是不可扩展的,只有角支撑


另一方面,
[ngClass]
是一个指令,您可以自己构建它。默认情况下,它只包含在Angular2中。

如何在普通html中添加类:)<代码>。您还可以绑定通常用
html
编写的元素的属性。
[class]
直接将
class
属性添加到生成的html中,浏览器使用该属性获取DOM节点的class属性<代码>[ngClass]以间接方式执行相同操作;所有这些都与类名无关——它是javascriptproperty@setec,那么为什么这个
Hello world#1
会抛出一个错误,而不是简单地将
someattr
属性添加到
html
?因为
[someattr]=“currentClasses”
将组件类的
currentClasses
属性的值绑定到当前元素的
someattr
属性。但由于不能设置任意属性(与属性相反),因此会出现错误。您的意思可能是
谢谢,那么这三种在内部实现的机制是否与一般绑定语法
[propertyOnComponentClass]=“value或propertyOnParentComponentClass”
不同?你知道什么内部类实现了这些绑定吗?我不知道是什么类实现了它。有一个模板解析器,根据它会生成一些代码,但我不知道相关的代码到底在哪里?您是否有机会调试\探索angular2的内部结构?您指的是这一部分“那么这三个在内部实现的机制是否与一般绑定语法不同?”。是的,这是一种特殊的绑定语法。不,我没有调试它。我只是看了一些专业的电影。