2015-11-04 3 views
0

Я создаю приложение IONIC ANDROID APP, используя плагин cordova-plugin-contacts, чтобы читать контакты и отображать их в списке ионов.Заполняющий ионный список с контактами

index.html

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> 
    <title></title> 

    <link href="lib/ionic/css/ionic.css" rel="stylesheet"> 
    <link href="css/style.css" rel="stylesheet"> 

    <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above 
    <link href="css/ionic.app.css" rel="stylesheet"> 
    --> 

    <!-- ionic/angularjs js --> 
    <script src="lib/ionic/js/ionic.bundle.js"></script> 

    <!-- cordova script (this will be a 404 during development) --> 
    <script src="cordova.js"></script> 

    <!-- your app's js --> 
    <script src="js/app.js"></script> 
    <script src="js/controllers.js"></script> 
    </head> 
    <body ng-app="starter" ng-controller="CListControl"> 

    <ion-pane> 
     <ion-header-bar class="bar-royal"> 
     <h1 class="title">Contact Reader</h1> 
     <button class="button" ng-click="showcontact()">Add New Contact</button> 
     </ion-header-bar> 
     <ion-content> 
     <h3 id="Data">Welcome to my app created by Ionic Cortova !! Yeh !!! Hello</h3> 

     <ion-list > 
      <ion-item ng-repeat="item in CListItems"> 
      {{item.displayName}} 
      </ion-item> 
     </ion-list> 

     </ion-content> 

    </ion-pane> 
    <script> 
    </script> 
    </body> 
</html> 

app.js

// Ionic Starter App 

// angular.module is a global place for creating, registering and retrieving Angular modules 
// 'starter' is the name of this angular module example (also set in a <body> attribute in index.html) 
// the 2nd parameter is an array of 'requires' 
angular.module('starter', ['ionic','starter.controllers']) 

.run(function($ionicPlatform) { 
    $ionicPlatform.ready(function() { 
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard 
    // for form inputs) 
    if(window.cordova && window.cordova.plugins.Keyboard) { 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
    } 
    if(window.StatusBar) { 
     StatusBar.styleDefault(); 
    } 
    }); 
}) 

controllers.js

angular.module('starter.controllers', []) 
    .controller('CListControl', function ($scope) { 

     $scope.CListItems=[{displayName: 'Mohit'}]; 
     document.getElementById("Data").innerHTML="Undone"; 

     //funtion to add items to the existing list 
     $scope.showcontact = function() { 
      console.log("before event"); 
      document.getElementById("Data").innerHTML="Done"; 
     document.addEventListener("deviceready", init, false); 

     function init() { 
      console.log("init"); 
      var options  = new ContactFindOptions(); 
     options.multiple= true; 
     options.hasPhoneNumber = true; 
     var fields  = [navigator.contacts.fieldType.displayName,navigator.contacts.fieldType.phoneNumbers]; 
     navigator.contacts.find(fields, gotContacts, errorHandler, options); 
     console.log("init end"); 
     } 


     //Error Alerting 
     function errorHandler(e) { 
     alert("errorHandler: "+e); 
     } 

     //Script to remove all the contacts without phonenumber. 

     function gotContacts(c) { 

     var i=0; 
     len=c.length; 
     while (i<len) 
     { 
      if (c[i].phoneNumbers==null) 
      { 
       c.splice(i,1); 
       if (i!=0) {i-=1;} 
       len-=1; 
      } 
      else 
      { 
       $scope.CListItems.push(c[i]); 
      } 
      i+=1; 

     } 
     alert("Found:"+$scope.CListItems.length+" Contacts"); 

     } 

     } 
}); 

Моего выхода: -

Кроме того, приложение начинает нормально, при нажатии на Добавить новый контакт кнопку, через некоторое время я получаю уведомление, показывая мне не контакты. Но только 1 элемент в списке ионов показывает, например, 'Mohit'.

Но когда я нажимаю кнопку , добавьте новую контактную кнопку, все контакты занесены в ионный список.

Моя задача: -

Как я уже объяснял, я думаю, что приложение работает 1 клик позади. Любые идеи, вызывающие это.

Я новичок в ионном каркасе, а также в javascript, поэтому, пожалуйста, сообщите мне, если это простая ошибка.

спасибо.

ответ

0

Ответ был довольно простым, мне просто нужно было использовать $scope.$apply() после того, как я изменил значение переменной, наблюдаемое <ion-list>. В этом случае после обновления $scope.CListItems

Смежные вопросы