据我所知,scope
基本上是 Controller 的一个实例。
每次我声明一个 Controller 时,scope
将可用于该 Controller 。
但是为什么指令在链接函数中有 scope
?
我没有为该指令声明任何 Controller 。
那为什么 link
函数有 scope
呢?有什么想法吗?
最佳答案
来自doc :
scope: The scope to be used by the directive for registering watches.
您可能也有兴趣了解 $scope and scope 之间的差异.
所有指令都有一个与之关联的范围。他们使用此范围访问模板和链接函数内的数据/方法。默认情况下,除非明确设置,否则指令不会创建自己的范围。因此,指令使用它们的父作用域(通常是 Controller )作为它们自己的作用域。
但是,AngularJS 允许我们通过传递一个称为指令定义对象的配置对象来更改指令的默认范围。指令定义对象——我们称它为 DDO——是一个简单的 JavaScript 对象,用于配置指令的行为、模板等。查看 AngularJS docs关于DDO。
因此,我们可以在链接函数中使用作用域来处理父作用域、子作用域或独立作用域。
您可以访问this有关 scope inside 指令的详细信息。
您可以 share the data between controller and linking function .
有时我们想在 Angular 指令中的 Controller 和链接函数中访问相同的数据。通常我们将这些数据添加到作用域对象中。这有一些问题,例如将它暴露给任何子范围。将共享属性添加到 Controller 实例本身并在链接函数中访问。
您可能还对 what is need of link function? 感兴趣
关于angularjs - 为什么指令有作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34038699/