为什么$scope和'这'关键字在控制器内部可互换使用

Why $scope and 'this' keyword used interchangeably inside controller?

本文关键字:内部 控制器 可互换 scope 为什么 关键字      更新时间:2023-09-26

我正在学习Angular的基础知识,对控制器、指令、范围、模型等知之甚少。在视频中,导师用这种方式编写了控制器:

var module = angular.module('name', [dependencies])
                    .controller($scope)...

我想让你从上面的片段中挑选的唯一一件事是,他(导师)正在将$scope对象传递给控制器的函数。这很好,很管用。

在Angular官方网站上的一个例子中,我发现了以下代码:

angular.module('invoice1', [])
.controller('InvoiceController', function() {
  this.qty = 1;
  this.cost = 2;
  this.inCurr = 'EUR';
  this.currencies = ['USD', 'EUR', 'CNY'];
  this.usdToForeignRates = {
    USD: 1,
    EUR: 0.74,
    CNY: 6.09
  };

我可以清楚地看到,在这个例子中,没有传递$scope,而是使用this。这是否意味着传递给控制器函数的$scope和控制器函数内部的"this"是相同的对象?

这里有很多不同的东西。

在第一个片段中,您将创建一个名为"invoice1"的模块。此模块不注入任何第三部分库或其他模块,因此为空[]。

之后,您将创建一个控制器。这个控制器正在从Angular库注入$scope。

在您的第二个片段中,导师正在使用controllerAs语法。因此,您不需要$scope,而是可以直接将对象绑定到控制器。在视图中,可以使用控制器的名称来引用绑定。

<div ng-controller="InvoiceController as invoice">
  {{ invoice.qty }}
</div>