AngularJS开发者指南上的表达式部分提到了一个名为$locals
的东西:
可以使用标识符this访问上下文对象,使用标识符$locals访问本地对象。
我不明白什么是“本地对象”,也找不到有关$locals的更多信息。它的目的是什么?如何对其进行操作?
AngularJS开发者指南上的表达式部分提到了一个名为$locals
的东西:
可以使用标识符this访问上下文对象,使用标识符$locals访问本地对象。
我不明白什么是“本地对象”,也找不到有关$locals的更多信息。它的目的是什么?如何对其进行操作?
ng-click="doSomething()"
时),为了使指令能够在需要时执行一些代码,指令可以使用本地值将信息传递给调用者。 ng-click="doSomething($event)"
,其中$event不是作用域的属性,而是由ng-click指令传递的值。$locals
一次性访问所有这些值。在上面的示例中,由指令传递的整个对象&或&attr-提供了一种在父级作用域上下文中执行表达式的方法。如果没有指定属性名称,则假定属性名称与本地名称相同。给定和小部件定义作用域:{localFn:“&myAttr”},则隔离作用域属性localFn将指向一个函数包装器,用于count = count + value表达式。通常希望通过表达式将数据从隔离作用域传递到父作用域,可以通过将本地变量名称和值的映射传递到表达式包装fn中来实现。例如,如果表达式为
increment(amount)
,则我们可以通过调用localFn({amount:22})指定amount值。
{amount:22}
可使用$locals访问,因此可以使用increment($locals.amount)
。同时考虑这个带有回调的指令示例:
// JS
angular.module('app', [])
.controller('AppCtrl', function($scope) {
$scope.log = function(locals) {
console.log(locals);
};
})
.component('fooBar', {
template: "",
bindings: { cb: '&'},
controller: function() {
this.a = 1;
this.b = 2;
this.c = 3;
this.cb(this);
}
});
// HTML
<body ng-app="app" ng-controller="AppCtrl">
<foo-bar cb="log($locals)">foobar</foo-bar>
</body>
{ a: 1, b: 2, c: 3, cb: function (locals){...} }
- Cory Silva