Android 在AngularJS中使用ngCordova检索1000多个联系人

Android 在AngularJS中使用ngCordova检索1000多个联系人,android,ios,angularjs,cordova,ionic-framework,Android,Ios,Angularjs,Cordova,Ionic Framework,我正在离子框架中开发一个应用程序,它显示从设备到最终用户的所有联系人,并提供联系人选择选项。 我正在使用ngCordova的$cordovaContacts模块获取联系人 这是从设备获取联系人的服务代码 angular.module('starter.services').factory('ContactManager', function($cordovaContacts, $ionicLoading){ return { getContacts: function() {

我正在离子框架中开发一个应用程序,它显示从设备到最终用户的所有联系人,并提供联系人选择选项。 我正在使用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);
    }
  }
});
它适用于100-400个触点。 但对于拥有约1000个联系人的设备,从插件获取联系人需要很多时间(控制器中的联系人获取警报在2-3分钟后显示)。从插件中获取联系人后,再次需要2-3分钟才能在UI中呈现(使用ng repeat),大多数时候应用程序都会挂起

在获取联系人时,我也搜索了分页,但在ngCordova文档中找不到任何按页面获取联系人的选项。
到目前为止,我正在android上进行测试,如果联系人数在1000左右,应用程序将挂起。
如何提高其性能?
我是angular和ionic的新手。

我建议不要在一次性显示中加载100-400个联系人,而是在用户向下滚动时加载下一个100个联系人。要实现这一点,您可以使用此插件。

如果他们是只读联系人,你可以使用“BindOnce”插件,这将提高绑定范围一次,并保持你的浏览器轻


希望这有帮助。

是的,使用BindOnce可以节省渲染时间,但我需要双向绑定,以便用户选择联系人。插件中的联系人加载速度也很慢。1.您的服务器响应您的请求的速度有多快。您可以在开发人员工具-->网络选项卡中进行检查。您是否尝试过ng无限滚动并以位异步加载数据。这里不讨论服务器。数据在设备本身中。我正在从移动设备获取联系人,应用程序在移动设备中。您找到优化此功能的方法了吗?提前谢谢。
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);
  });

});