1.一次性加載
解決問題:減少上下文中$watch,進而減少內存消耗
ios的內存不想安卓一樣,在安卓上邊運行的很流暢,但是在ios上可能會出現卡頓的情況,尤其是列表可以無限加載的情況,
使用repeater,綁定數據一般是使用{{}}去綁定數據,
由於angular的臟值檢測機制,angular會一直的檢測這個值時都在變動,變動后會通知界面進行變更,但是列表的情況下,我們不需要對一些名稱啊、日期之類的進行檢測,這時候會浪費很多內存去監控這些值的變化,實際上對我們根本沒有用戶,我們根本都不需要對這些值的檢測,這時候我們就需要使用一次性綁定了
使用的方法很簡單,代碼如下:
<!DOCTYPE html> <html ng-app='app'> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="angular.js"></script> <script type="text/javascript"> angular.module('app', []) .controller('testCtrl', function($scope, $rootScope) { $scope.test_value = 1; $scope.testClick = function() { $scope.test_value++; } }) </script> </head> <body> <div ng-controller="testCtrl"> {{test_value}} {{::test_value}} <input type="button" ng-click="testClick();" value="test"> </div> </body> </html>
2.ng-repeat的track by屬性
angular存在臟值檢測機制,對於列表我們常用ng-repeat去遍歷循環
數組只要其一個子項的屬性變動,angular會重新渲染界面,dom 操作是很消耗內存的,在查找元素時,track by是避免重復值的,在angular檢測到值變動的時候,也方便在數組對象中查找單一對象【用整個對象對比跟單一個字段查找效果很明顯】,但是track by 字段必須是唯一字段
3.滾動條
采用原生滾動條,不使用jsscroll,原生的比較節約內存
全局配置方法,
angular.module('yourModule').config(function($ionicConfigProvider) { $ionicConfigProvider.scrolling.jsScrolling(false); });
單個頁面配置方法
把overflow-scroll=”true”添加到ion-content中