AngularJS 文档教程中关于 $controller 服务的问题

Question about $controller service in AngularJS documentation tutorial

此代码来自 https://docs.angularjs.org/tutorial/step_02。我只是想知道为什么 scope.phones.length 属性 是 3 而不是 0,因为范围是一个空对象。我不确定这条线在做什么:

var ctrl = $controller('PhoneListController', {$scope: scope});

它看起来像是将控制器中的 $scope 设置为空范围对象。

describe('PhoneListController', function() {

  beforeEach(module('phonecatApp'));

  it('should create a `phones` model with 3 phones', inject(function($controller) {
    var scope = {};
    var ctrl = $controller('PhoneListController', {$scope: scope});

    expect(scope.phones.length).toBe(3);
  }));

});

在这里创建具有预定义范围的控制器

var scope = {};
var ctrl = $controller('PhoneListController', {$scope: scope});

当控制器启动时,它的代码如下:

$scope.phones = [...]

所以当它执行时,它会放入包含 3 个项目的 'phones' 数组。

您可以尝试使用它并将一些预定义的值放入范围:

var scope = {foo: 'bar', phones: [1,2,3]};
var ctrl = $controller('PhoneListController', {$scope: scope});
phonecatApp.controller('PhoneListController', function PhoneListController($scope) {
  console.log(foo) // 'bar'
  console.log(phones) // [1,2,3]

  $scope.phones = [
   {name: 'Nexus S'}
  ]

  console.log(phones) // [{name: 'Nexus S'}] here will be an array what we just defined to this property