2016-10-02 18 views
0

形式的控制器時,我很新的angularjs和SPA。角注射錯誤添加在導航欄下拉

我試圖使用自舉添加登錄部分如在索引溫泉下拉的導航欄的結構。我想單擊登錄按鈕,並在身份驗證正常時調用該函數進行身份驗證並隱藏登錄的下拉列表。

在開始的時候我並沒有包括在HTML控制器,但後來我包括屬性NG控制器,我不知道爲什麼我收到此錯誤

Error: [$injector:unpr] http://errors.angularjs.org/1.5.8/$injector/unpr?p0=%24scopeProvider%20%3C-%20%24scope%20%3C-%20MyService 

所以,如果我刪除ng控制器=「MyController」我沒有得到錯誤,但我不能從控制器調用方法,我以前嘗試過,但沒有任何成功。

angular.element(document.getElementById('frmMyController')).scope().authenticate(); 

但正如我所說如果添加ngcontroller我的應用程序將生成注入錯誤。

我粘貼我的代碼jsfiddle但它不會產生任何錯誤。

所以,我怎麼能調用該方法與按鈕登錄正確,然後如果響應是確定的驗證,如何隱藏下拉按鈕登入並顯示在個人資料認證?

回答

0

這似乎是誤注入。 嘗試注入$scope這樣的:

app.controller('MyController', ['$scope', 'MyService',function($scope, MyService){ 
    $scope.authenticate = function(username, password){ 
     MyService.authenticate(username, password); 
    } 
}]) 

你必須這樣做對所有組件(配置,服務等)。

我不知道您使用的是哪個構建系統,但是如果您使用的是gulp,則可以將gulp-annotate添加到您的構建流中。它會自動添加註入的數組。

編輯1

從服務中刪除$scope

+0

謝謝您的回答。我仍然得到同樣的錯誤。我不知道爲什麼在這種特殊情況下它不起作用。在其他頁面中,我聲明瞭控制器,如我在示例中所示,並且我沒有收到此錯誤。 –

+0

@MaximusDecimus從'service'中刪除'$ scope'。 – Zakaria

+0

是的。我們同時也做了同樣的事!謝謝。 –