首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AngularJS中使用ngCordova检索1000多个联系人

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

Stack Overflow用户
提问于 2014-11-26 14:38:46
回答 1查看 1.8K关注 0票数 5

我正在开发一个离子框架中的应用程序,显示从设备到最终用户的所有联系人,并提供联系人选择的选项。我正在使用ngCordova的$cordovaContacts模块来获取联系人。

这是从设备获取联系人的服务代码。

代码语言:javascript
复制
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变量的控制器代码

代码语言:javascript
复制
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个联系人的设备,从插件中获取联系人需要很长时间( 2-3分钟后,控制器中会显示联系人获取的警报)。从插件中获取联系人后,再次在UI中渲染需要2-3分钟(使用ng-repeat),并且大多数时候应用程序会挂起。

我还在获取联系人时搜索了分页,但在ngCordova文档中找不到任何按页面获取联系人的选项。

到目前为止,我正在android上测试,应用程序在联系人数量约为1000的情况下挂起。

我如何提高它的性能?我是angular和ionic的新手。

EN

回答 1

Stack Overflow用户

发布于 2014-11-26 16:17:38

我建议不要在一次显示100个联系人时加载100-400个联系人,当用户向下滚动时,您可以加载下100个联系人。要实现这一点,你可以使用这个插件。http://binarymuse.github.io/ngInfiniteScroll/

如果他们是在只读联系人中,你可以使用"BindOnce“插件,它将改进绑定范围一次,并保持您的浏览器轻量级。https://github.com/Pasvaz/bindonce

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27142786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档