1. 程式人生 > >AngularJs依賴注入的一個錯誤,程式碼不報錯但程式碼也一句都不執行

AngularJs依賴注入的一個錯誤,程式碼不報錯但程式碼也一句都不執行

在這裡插入圖片描述
百度找來找去沒找到答案,最後想到還是去看看官方文件吧
在這裡插入圖片描述
結果:順序必須完全一致,我檢查來檢查去沒想到是這個問題。

以後找不到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+">>>>"); }); }