angularjs – 将`this`传递给ng-click中的函数会暴露什么?

假设我们有一个带有ng-click指令的按钮.它调用一个函数将其作为参数传递.

经过检查,发现传递的参数类型是一个对象.但它既没有任何元素属性,也不是jQuery选择器.

到底是什么?

最佳答案 ngClick和类似指令在当前范围的上下文中执行.所以这指的是范围对象.

如果你没有创建新范围的ngRepeat,ngInclude或其他指令,那么你可以签入控制器函数并验证这个ng-click =“test(this)”会传递一些东西作为$scope:

$scope.test = function(something) {
    console.log(something === $scope); // => true
}

另一个例子.使用ngRepeat,每次迭代都会获得新的子范围,因此在这种情况下,如果您有此列表:

<li ng-repeat="n in numbers">
    <button ng-click="test(this)">{{n}}</button>
</li>

你会有一些东西是主要范围的孩子:

$scope.test = function(something) {
    console.log(something.$parent === $scope); // => true
};

演示:http://plnkr.co/edit/nxxCn7SYUA4PfJpJoueu?p=info

点赞