Angular 指令:范围与 bindToController

Posted

技术标签:

【中文标题】Angular 指令:范围与 bindToController【英文标题】:Angular Directives: scope vs bindToController 【发布时间】:2016-04-30 20:54:38 【问题描述】:

从 Angular v1.4 开始,可以这样做:

scope: ,
bindToController: 
    name: "="

而不是旧的做事方式:

scope: 
    name: "="
,
bindToController: true

除了更直观,它们之间有什么区别吗?

【问题讨论】:

理论上,您可以将许多参数传递给指令,并且只将其中一些参数绑定到控制器。我想不出任何正当理由这样做,但这是可能的。使用原始语法,要么全有,要么全无。 blog.thoughtram.io/angularjs/2015/01/02/… 查看这篇富有洞察力的文章以获得一些解释 bindToController: Object in directives的可能重复 【参考方案1】:

将 bindToController 视为 Angular 未来版本的迁移路径。

我们更喜欢编写具有隔离范围的指令(或组件)并将您想要传递的属性绑定到控制器。

作用域中的绑定变量会逐渐消失。

在 Angular (1.5) 的新版本中,您不需要使用作用域或 bindToController,因为默认作用域是隔离的,并且对于控制器的绑定变量,您可以使用绑定。

这对于防止使用 $scope 也很有用。如果您想了解更多信息,请阅读这篇文章:https://toddmotto.com/no-scope-soup-bind-to-controller-angularjs/

【讨论】:

以上是关于Angular 指令:范围与 bindToController的主要内容,如果未能解决你的问题,请参考以下文章

Angular依赖注入机制与服务的作用范围

Angular 自定义指令范围未按预期更新

Angular 组件或指令匹配“jhi-product-list”元素超出了当前 Angular 模块的范围

Angular 指令的隔离范围上的可选双向绑定

WebStorm Angular 指令范围和 HTML

如何使指令和组件在全球范围内可用