J'essaie d'utiliser une valeur de cookie à plusieurs endroits et dans plusieurs contrôleurs, mais je reçois une erreur en disant $ rootScope n'est pas défini
Voici le code:
capApp.controller('cookieCtrl', ['$scope','$cookies', function($scope, $rootScope, $cookies) {
// set variable for nav
$rootScope.cookieSet = $cookies.user_id;
}]);
capApp.controller('mainController', function($scope, $location) {
$scope.user_id = $rootScope.cookieSet; // set global var
});
Y a-t-il une meilleure manière de faire cela? Fondamentalement, je veux que la valeur des cookies soit disponible sur tout le site
Vous avez manqué d'ajouter $rootScope
dépendance dans les deux contrôleurs
Code
capApp.controller('cookieCtrl', ['$scope','$rootScope', '$cookies',
function($scope, $rootScope, $cookies) {
// set variable for nav
$rootScope.cookieSet = $cookies.user_id;
}]);
capApp.controller('mainController', ['$scope', '$location', '$rootScope',
function($scope, $location, $rootScope) {
$scope.user_id = $rootScope.cookieSet; // set global var
});
Assurez-vous annotation de tableau d'injection de dépendance pour vous assurer qu'il ne cassera pas le code lors de la minification JavaScript.
Note latérale: - N'utilisez pas
$rootScope
pour partager les fonctions/données communes de l'application, utilisez le service/usine pour les mêmes
Vous n'avez pas injecté $ rootScope dans mainController
capApp.controller('mainController', function($scope,$rootScope, $location) {
$scope.user_id = $rootScope.cookieSet; // set global var
});
Mise à jour:
Créez d'abord un service qui agit comme un pont entre les contrôleurs:
1) addCookie utilisé pour ajouter un cookie.
2) getCookie utilisé pour obtenir le jeu de cookies.
capApp.factory('user', function() {
var cookieSet;
var addCookie = function(val) {
cookieSet=val;
}
var getCookie = function(){
return cookieSet;
}
return {
addCookie : addCookie,
getCookie : getCookie
};
});
capApp.controller('cookieCtrl', ['$scope', 'user', '$cookies', function($scope, user, $cookies) {
// set variable for nav
user.addCookie($cookies.user_id);
}]);
capApp.controller('mainController', function($scope, $location,user) {
$scope.user_id =user.getCookie(); // set global var
});