百度找来找去没找到答案,最后想到还是去看看官方文档吧
结果:顺序必须完全一致,我检查来检查去没想到是这个问题。
以后找不到bug产生的原因多看看文档吧。。。
又出现bug了,接着上面那个bug来,改完上面那个bug后chrome报错了
TypeError: $cookies.put is not a function
at c.<anonymous> (toDetailPage?goodId=1:168)
at d (angular.min.js:30)
at Object.instantiate (angular.min.js:31)
at angular.min.js:61
at angular.min.js:49
at q (angular.min.js:7)
at E (angular.min.js:48)
at f (angular.min.js:42)
at angular.min.js:42
at angular.min.js:18
原因:AngularJS v1.2.9的cookies模块$cookies这个对象就没有网上百度的什么put方法,那都是在新版本中才有的。v1.2.9主推的是 $cookieStore(后面的版本即将废弃),用的版本太老了。。。
这里能看到v1.2.9的api:https://code.angularjs.org/1.2.9/docs/api/ngCookies.$cookies
又来了,$ cookies这玩意有延迟,v1.2.9的angularJs,$ cookieStore.put(‘car’,car);这个方法做了更改的话在一次交互的时间内是不会更新到浏览器的cookie的
$scope.addToCar=function () {
if($scope.checkIntegrity()==false)return;
var car=$cookieStore.get('car');
if(car==null||car==undefined){
car=[];
var item={};
item.goodId=$scope.goodJson.id;//以商品id和规格选项作为区分
item.so=JSON.parse(JSON.stringify($scope.selectedData));
item.num=1;
car[car.length]=item;
}else{
//遍历car中是否存在同样的商品,以商品id和规格选项作为区分
var i,j;
for(i=0;i<car.length;i++){
if(car[i].goodId==$scope.goodJson.id){
for(j=0;j<car[i].so.length;j++){
if(car[i].so[j]!=$scope.selectedData[j]){
break;
}
}
//有就把数量加一
if(j==car[i].so.length){
car[i].num++;
break;
}
}
}
//没有就加入到购物车
if(i==car.length){
var item={};
item.goodId=$scope.goodJson.id;//以商品id作为区分
item.so=JSON.parse(JSON.stringify($scope.selectedData));
item.num=1;
car[car.length]=item;
}
}
console.log(">--------->")
$cookieStore.put('car',car);//破方法,有延迟,做了更改的话在一次交互的时间内是不会更新到浏览器的cookie的,用document.cookie代替一下
document.cookie="car="+escape(JSON.stringify(car));
console.log($cookieStore.get("car"));
console.log(">--------->")
//如果用于已经登陆了,存入redis记录购物车
$http.get('fore/detail/saveCar').
success(function (resp) {
console.log(resp+">>>>");
}).
error(function (resp) {
console.log(resp+">>>>");
});
}