angularjs - 为什么指令有作用域?

标签 angularjs angularjs-directive angularjs-scope

据我所知,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/

相关文章:

javascript - 在我的应用程序中创建新模块的好处

javascript - 每当服务内的数据发生变化时更新 View

javascript - 从 Controller 触发指令的更好方法

javascript - 为什么当我使用表达式时 Angular 不更新 ng-show 状态?

angularjs - Angular js中两个不同的模块可以有同名的 Controller 吗?

javascript - 从 Angular Directive(指令)调用 Controller 函数

javascript - 具有特定范围的angularjs部分模板

javascript - 制作 Azure 导航门户

javascript - 在 AngularJS 中,如何加载隐藏元素的页面?

angularjs - Angular 在哪里存储指令信息?