$ rootScope не определен
Я пытаюсь использовать значение cookie в нескольких местах и в нескольких контроллерах, но я получаю сообщение об ошибке $rootScope не определено
Здесь код:
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
});
Есть ли лучший способ сделать это? В основном я хочу, чтобы значение cookie имело доступное место на сайте
Ответы
Ответ 1
Вы пропустили добавление зависимости $rootScope
в обоих контроллерах
код
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
});
Обеспечьте аннотацию массива инъекции зависимостей, чтобы гарантировать, что он не сломает код при выполнении JavaScript-оценки.
Боковое примечание: - Не используйте $rootScope
для совместного использования общей функции/данных приложения, используйте сервис /factory для того же
Ответ 2
Вы не вводили $rootScope в mainController
capApp.controller('mainController', function($scope,$rootScope, $location) {
$scope.user_id = $rootScope.cookieSet; // set global var
});
Update:
Сначала создайте службу, которая действует как мост между контроллерами:
1) addCookie, используемый для добавления куки файла.
2) getCookie используется для получения файла cookie.
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
});