2013-02-27 38 views
2

從這個網址https://github.com/angular/angular-seed/blob/master/app/js/app.js,我得到了像下面這樣的控制器。關鍵字「this」裏面的角度js控制器

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

到目前爲止,我一直在做的角度是定義一個控制器$ scope注入。所以,我想,改變上述控制器

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

但是,這給了一個錯誤錯誤:未知提供商'$scope'

我這裏有三個問題:

  1. 爲什麼控制器的$scope沒有注入。
  2. this裏面的WineListCtrl是指$scope
  3. Angular中的大部分錯誤格式爲「XXXX的未知提供者 」。如果螢火蟲這麼說,我應該尋找什麼?

回答

1
  1. 您正在使用 「推斷的依賴性」(見DI page)應該工作正常,除非您壓縮或您的JavaScript。

  2. my answer這個問題:'this' vs $scope in AngularJS controllers

  3. 「未知供應商」的錯誤,當你忘記使用ng-app某處通常發生,或者你忘了相應的模塊進行初始化您的應用程序:

+0

。我不混淆任何文件。即使在添加註入註釋之後,仍然會在控制器下面拋出相同的錯誤。我怎樣才能訪問'$ scope'。請查看http:// plnkr上的文件。co/edit/F3WOir8KmEAcqSrX0bRI?p =預覽 – rajkamal 2013-02-28 00:12:23

+0

請參閱http://plnkr.co/edit/K2Q61Bw0w9PnjRdCtvWY?p=preview。你的問題之一是你需要注入$ routeProvider而不是$ route。另外,您不能在控制器中注入$ routeProvider。請參閱[$ route](http://docs.angularjs.org/api/ng.$ro​​ute)頁面上的示例。如果你想使用/注入$資源,你必須包含另一個.js文件。請參閱[$資源頁面]上的Disqus評論(http://docs.angularjs.org/api/ngResource.$resource)。 – 2013-02-28 01:07:06

+0

謝謝,解決了這個問題。 – rajkamal 2013-02-28 02:50:29

1
  1. 當以這樣的形式寫你的控制器,你應該與依賴注入他們像這樣:

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

  2. this是不一樣的$scope。 $範圍an angular-specific object$rootScope.$new()

  3. 創造見#1

+0

甚至在添加'WineListCtrl。$ inject = ['Wine','$ scope'];'後,我得到相同的錯誤。 – rajkamal 2013-02-27 23:14:04

+0

你可以在jsfiddle或plunker中重新創建問題嗎? – Stewie 2013-02-27 23:15:36

+0

Plunker URL:http://plnkr.co/edit/F3WOir8KmEAcqSrX0bRI?p =預覽。我在將文件放入活塞時遇到了一些問題。 但我已附加所有需要的文件。 現在的問題是在控制器.js中,在第24行。我已經包含了你要求包含的注入註釋。第1點爲 – rajkamal 2013-02-27 23:57:33