为什么angular 1.6.6v $ cookies不执行读写操作?

时间:2017-09-05 10:45:40

标签: javascript angularjs cookies

我是 Angular 的新手。开始研究测试项目。我想在cookie中存储用户身份验证。我已尽力做到这一点,但它会给我未定义的错误,每当我试图检索我的价值,既没有确认商店价值,也无法弄清楚出了什么问题?我一步一步地工作,并在 stackoverflow 上阅读了很多答案。感谢。

  

我还启用了chrome cookie来读写数据enter image description here

使用Angular 1.6.6

angular.module('LoginCtrl', ["ngCookies"])
    .controller('LoginController', function($rootScope, $location, $scope, 
    $http, $cookies)
	{

		$scope.loginformData = {};
		$scope.loginmessage='';
		$scope.errorlogin=false;
		$scope.loginUser = function()
		{
			Login.login($scope.loginformData)
			.then(function(data)
			{
				$scope.loginmessage = data;
				if(data!=='Wrong Email Or Password!')
				{
					$cookies.put('myFavorite', 'oatmeal');
					var favoriteCookie = $cookies.get('myFavorite');
					console.log(favoriteCookie); // return undefined
				}
				else
				{
					$scope.errorlogin = true;
					console.log('Error');				
				}
			});
        };
		

    });
<script src="https://code.angularjs.org/1.6.6/angular.js"></script>
<script src="https://code.angularjs.org/1.6.6/angular-cookies.js"></script>
<base href="/index.html"/>
<div ng-app="LoginCtrl">
  <div ng-controller="LoginController">

  </div>
</div>

2 个答案:

答案 0 :(得分:0)

您需要将 <InfinityMenu headerContent={Header} headerProps={{ value: 'dummy' }} emptyTreeComponent={EmptyComponent} tree={this.state.categories} onLeafMouseClick={this.onLeafMouseClick} onNodeMouseClick={this.onNodeMouseClick} /> 与版本1.4以上的版本一起使用

同样可以获取信息。

$cookies.putObject('myFavoritec',  'oatmeal');

答案 1 :(得分:0)

在详细分析 angular-cookies.js 之后,我逐行调试。我使用console.log()看到 cookiePath 。实际上cookie路径没有分配正确的值。

  var cookiePath = $browser.baseHref();
  console.log(cookiePath); // return /index.html 

那是无效路径,这就是无法存储cookie的原因,路径应该是我项目的根目录

这个错误的路径是从我的索引文件生成的,其中我用“/index.html”设置了基本标记

<base href="/index.html">

然后我用root更改了基本标记,并且它可以工作。

<base href="/">

现在!它有效。