AngularJs依賴注入的一個錯誤,程式碼不報錯但程式碼也一句都不執行
阿新 • • 發佈:2018-11-26
百度找來找去沒找到答案,最後想到還是去看看官方文件吧
結果:順序必須完全一致,我檢查來檢查去沒想到是這個問題。
以後找不到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+">>>>");
});
}