【问题标题】:Why angular 1.6.6v $cookies does not perform read or write operations?为什么 Angular 1.6.6v $cookies 不执行读取或写入操作?
【发布时间】:2017-09-06 02:37:06
【问题描述】:

我是 Angular 的新手。开始做一个测试项目。我想将用户身份验证存储在 cookie 中。我已尽力做到这一点,但它会给我未定义的错误,每当我试图检索我的价值时,既不确认存储价值,也不知道出了什么问题?我一步一步地工作,并在 stackoverflow 上阅读了许多答案。谢谢。

我还启用了 chrome cookie 来读写数据

使用 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>

【问题讨论】:

标签: javascript angularjs cookies


【解决方案1】:

Angular 1.4 以上版本需要使用$cookies.putObject('myFavoritec', 'oatmeal');

获取信息也是如此。

`$cookies.getObject('myFavoritec');

【讨论】:

  • 仍未定义
【解决方案2】:

经过angular-cookies.js的详细分析,我在逐行调试的时候。我使用 console.log() 看到了 cookiePath。实际上 cookiepath 没有分配正确的值。

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

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

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

<base href="/index.html">

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

<base href="/">

现在!它有效。

【讨论】:

    猜你喜欢
    • 2012-12-14
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多