2

从这个 URL https://github.com/angular/angular-seed/blob/master/app/js/app.js,我得到了一个如下所示的控制器。

function WineListCtrl(Wine) {
    this.wines = Wine.query();
}

到目前为止,我在 Angular 中所做的是定义一个注入 $scope 的控制器。所以我尝试了,将上面的控制器更改为

function WineListCtrl(Wine, $scope) {
    console.log($scope, this)
    this.wines = Wine.query();
}

但这给出了一个错误 Error: Unknown provider for '$scope'.

我在这里有三个问题:

  1. 为什么$scope不注入控制器的。
  2. 里面thisWineListCtrl意思是$scope
  3. Angular 中的大多数错误都属于“XXXX 的未知提供者”格式。如果萤火虫这么说,我应该寻找什么?
4

2 回答 2

1
  1. 在以这种形式编写控制器时,您应该向它们注入如下依赖项:

    function WineListCtrl(Wine, $scope) { console.log($scope, this) this.wines = Wine.query(); } WineListCtrl.$inject = ['Wine', '$scope'];

  2. this不一样$scope。$scope 是一个特定于角度的对象,使用$rootScope.$new()

  3. 见#1

于 2013-02-27T22:12:19.083 回答
1
  1. 您正在使用“推断的依赖项”(请参阅​​ DI 页面),它应该可以正常工作,除非您缩小或混淆您的 JavaScript。

  2. 请参阅对这个问题的回答:AngularJS 控制器中的'this' vs $scope

  3. ng-app当您忘记在某处使用,或者您忘记使用适当的模块初始化您的应用程序时,通常会发生“未知提供者”错误:

于 2013-02-27T23:28:11.700 回答