【发布时间】:2015-01-24 09:43:36
【问题描述】:
我正在 Ionic 框架中开发一个应用程序,它显示从设备到最终用户的所有联系人,并提供选择联系人的选项。 我正在使用 ngCordova 的 $cordovaContacts 模块来获取联系人。
这是从设备中获取联系人的服务代码。
angular.module('starter.services').factory('ContactManager', function($cordovaContacts, $ionicLoading){
return {
getContacts: function() {
$ionicLoading.show({ template: "<div class='ion-ios7-reloading'></div>"});
var options = {};
options.filter = "";
options.multiple = true;
options.fields = ['displayName', 'name', 'phoneNumbers', 'emails'];
//get the phone contacts
return $cordovaContacts.find(options);
}
}
});
下面是控制器代码,它将联系人分配给 $scope.contacts 变量
angular.module('starter.ctrls').controller('ShareCtrl', function($scope, ContactManager, $stateParams) {
$scope.contacts = [];
ContactManager.getContacts().then(function(_result){
alert("CONTACTS FETCHED: Now rendering in Template");
$scope.contacts = _result;
}, function(_error){
alert("Error: " + _error);
});
});
它适用于 100-400 个联系人。 但是对于有大约 1000 个联系人的设备,从插件中获取联系人需要大量时间(控制器中的 CONTACTS FETCHED 警报会在 2-3 分钟后显示)。从插件中获取联系人后,再次需要 2-3 分钟才能在 UI 中呈现(使用 ng-repeat),并且大多数情况下应用会挂起。
我还在获取联系人时搜索了分页,但在 ngCordova 文档中找不到任何选项来按页面获取联系人。
截至目前,我正在 android 上进行测试,如果联系人数量约为 1000,应用程序会挂起。
我怎样才能提高它的性能?
我是角度和离子的新手。
【问题讨论】:
-
你找到优化这个的方法了吗?提前致谢。
标签: android ios angularjs cordova ionic-framework