2016-01-22 82 views
0

在我的角度應用角度:用ngCookies

var mainApp = angular.module('mainApp', ['ngCookies']); 

我定義authCtrl控制器奇怪的行爲:(?注射陣列)

mainApp.controller('authCtrl', ['$scope, $cookies',function ($scope, $http, $cookies) { 

    $scope.credentials = {}; 

    $scope.signCheck = function() { 
     a = $cookies.getObject('session_credentials'); 
     console.log(a); 
    }; 
}]); 

如果我去除陣列$scope聲明

mainApp.controller('authCtrl', ['$cookies',function ($scope, $http, $cookies) { 

$scope變得未定義。 如果我正在刪除$cookies - $cookies變得未定義。 如果我保留它們 - $injector unknown provider error

我在做什麼錯了?

回答

1

只是要確保您指定的服務,在噴油器陣列中的一個正確的順序和控制器功能PARAMS:

Angular docs says

這是註釋應用程序組件的首選方式。這是 如何編寫文檔中的示例。

例如:

someModule.controller('MyController', ['$scope', 'greeter', function($scope, greeter) { 
    // ... 
}]); 

在這裏,我們通過一個數組,其元素由後跟函數本身字符串(依賴關係的 名稱)的列表的。

使用這種類型的註釋時,注意保持註釋 數組與參數在函數聲明中保持同步。

這或許控制器定義會爲你工作:

mainApp.controller('authCtrl', ['$scope', '$http', '$cookies', function ($scope, $http, $cookies) { 

    $scope.credentials = {}; 

    $scope.signCheck = function() { 
     a = $cookies.getObject('session_credentials'); 
     console.log(a); 
    }; 
}]); 
+0

酷,迪馬,它完全適用。謝謝你! –