关于javascript:为什么$ scope和’this’关键字在控制器内互换使用?

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

本问题已经有最佳答案,请猛点这里访问。

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

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

我希望您从上面的代码片段中选择的唯一一件事是,他(导师)正在将$scope对象传递给控制器的函数。那很好,很有效。

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

1
2
3
4
5
6
7
8
9
10
11
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"的模块。此模块不插入任何第三部分库或其他模块,因此为空[]。

之后,您将创建一个控制器。此控制器正在从角度库中注入$scope。

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

1
  {{ invoice.qty }}