AngularJS 表达式中的 $locals 是什么?

2024-02-11

AngularJS 表达式开发人员指南 https://docs.angularjs.org/guide/expression提到了一个名为$locals:

可以使用标识符 this 访问上下文对象,并使用标识符 $locals 访问本地对象。

我不明白“locals 对象”是什么,并且在文档中找不到有关 $locals 的更多信息。它的目的是什么?你如何对其进行操作?


相关提交可以在哪里找到更多信息this one https://github.com/angular/angular.js/commit/0ea535035a3a1a992948490c3533bffb83235052,这也链接到要求引入 $locals 的问题。

简而言之,当使用“&”将参数传递给指令时,为了使指令能够在需要时执行一些代码(例如,当您使用ng-click="doSomething()"),该指令可以使用本地值将信息传递给调用者。

例如你可以使用ng-click="doSomething($event)",其中 $event 不是作用域的属性,而是 ng-click 指令传递的值。

您可以使用以下命令一次访问所有这些值,而不是单独访问指令传递的每个“本地”值$locals.

有关如何从指令传递本地值的更多信息,请参阅指令文档 https://docs.angularjs.org/api/ng/service/%24compile#-scope-:

& 或 &attr - 提供一种在父作用域上下文中执行表达式的方法。如果未指定属性名称,则假定属性名称与本地名称相同。给定作用域的 widget 定义:{ localFn:'&myAttr' },则隔离作用域属性 localFn 将指向 count = count + value 表达式的函数包装器。通常需要通过表达式将数据从隔离范围传递到父范围,这可以通过将局部变量名称和值的映射传递到表达式包装器 fn 来完成。例如,如果表达式是increment(amount)然后我们可以通过调用 localFn 作为 localFn({amount: 22}) 来指定金额值

(强调我的)

在上面的例子中,整个对象{amount: 22}可以使用 $locals 来传递该指令,因此您可以使用increment($locals.amount)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS 表达式中的 $locals 是什么? 的相关文章

随机推荐