提前說明:這些坑是ionic1的。
一、關於緩存:<ion-view>中設置cache-view="false"表示禁用緩存,默認為true;
二、列表進入詳情頁面后返回,列表頁面刪選欄和滾動條和跳轉前一樣,但從home進入列表頁面要刷新。思路是用$ionicHistory判斷是進入or回退,要是進入就初始化,回退就保留緩存:
- 列表頁面設置cache-view="true";
- home控制器中提供添加:$ionicHistory.clearHistory(),因為不管回退還是進入,$ionicHistory的backView都是home頁面;
- 列表頁面添加以下代碼:
$scope.$on("$ionicView.beforeEnter", function() { var clearHistoryForIndexPage = function() { var history = $ionicHistory.forwardView(); if (!history) { init(); } }; clearHistoryForIndexPage(); });
其中init()為初始方法。
三、滾動條:
- <ion-scroll>必須設置高度,且高度小於內容時才會滾動;
- 在瀏覽器下,滾動條滾動到底部還能再繼續滾動,但真機上確是到底部無法滾動,不得不說這真是個坑,我研究了好久,結果在真機上卻是正常的,所以有時候找不出原因,不妨真機調試看看,沒准只是瀏覽器視圖錯誤。
- 用指令動態設置<ion-scroll>的高度:
.directive('scrollHeight',function($window){ return{ restrict:'AE', link:function(scope,element,attr){ element[0].style.height=($window.innerHeight)+'px'; //這里設置為屏幕高度 } } });
四、ion-infinite-scroll調用多次問題
解決方法:設置immediate-check="false"。
原因:若列表沒有很快加載出來,瀏覽器以為已經到達底部,所以on-infinite方法會觸發多次。immediate-check表示是否頁面加載后立刻觸發on-infinite方法,false表示只有滾動到頁面邊緣時才觸發。
五、$ionicBackdrop 的retain()方法表示顯示背景,使用時要注意防止調用三次,否則release()需要調用三次才能取消背景層。
六、<textarea>和padding對頁面切換動畫的影響:
<ion-view view-title="Facts" > <ion-content > <div class="padding"> <textarea placeholder="test" autofocus="autofocus" rows="6" ng-model="Input.test" ></textarea> </div> <div> test</div> <p > <a class="button icon ion-home" href="#/tab/home"> Home</a> <a class="button icon icon-right ion-chevron-right" href="#/tab/facts2">More Facts</a> </p> </ion-content> </ion-view>
在<ion-content>和<textarea>之間任何元素(包括<ion-content>和<textarea>)樣式加上padding,都會導致本頁面切換時出現卡頓、過頭的問題。
ionic2中已經出現了新元素<ion-textarea>,可能解決了該問題
原因和解決方法還沒有找到,此坑待填。
七、調起微信支付失敗,返回-1。
微信支付開發文檔顯示-1報錯原因為:簽名錯誤、未注冊APPID、項目設置APPID不正確、注冊的APPID與設置的不匹配、其他異常等。
解決方法:將參數timestamp從字符串改成數字即可。