2016-12-07 50 views
0

我的應用程序在使用角度& apache cordova在android上開發時出現問題。Apache cordova var未顯示在html中

在第一個地方,我從我的智能手機獲取聯繫人列表並將其存儲在一個VAR:$ scope.listecontacts

// alert('nb contacts '+contacts.length); 
      for (var i = 0; i < contacts_1.length; i++) 
      { 



        if(contacts_1[i].phoneNumbers != null && contacts_1[i].name != null && typeof contacts_1[i].phoneNumbers != 'undefined') 
        { 

           if($scope.numero_tel==0) 
           { 
           $scope.numero_tel = contacts_1[i].phoneNumbers[0].value; 
           } 

           $scope.listecontacts.push(contacts_1[i]); 

        } 

       } 

而且在我第二次嘗試在HTML DOM這樣來顯示它:

<div ng-repeat="t in listecontacts" >{{(t.name.formatted)}}</div> 

當我啓動我的應用程序運行良好,但是當我回去的主頁,然後去上獲取聯繫人列表視圖中,DIV不填充聯繫人列表。

我已經檢查了變量:$ scope.listecontacts,它不是空的....

有沒有人符合這個問題?

你有什麼想法?

非常感謝!

+0

'$ scope.liste聯繫人'確實被破壞了,並沒有被保留,你需要用get方法創建一個服務,該方法返回數組並將該服務合併到代碼中。 – t0mm13b

+0

嘗試和console.log()何時顯示視圖,對於初學者,我們應該知道,當您進行查詢時,它將比所顯示的視圖花費更長的時間,除此之外,您必須預測除查詢時間外獲得了循環和object.push()函數。 嘗試更新循環完成後的變量... –

+0

如何在循環後更新變量?我在循環中試過這個: $ scope。$ apply(function(){$ scope.listecontacts.liste_1.push(contacts_1 [i]);});但沒有影響: -/ – Neiluj

回答

0

我試圖使用一個服務是這樣的:

app.factory('ContactService', function($window, $q, $rootScope){ 
        var options = new ContactFindOptions(); 
        options.filter = ""; 
        options.multiple = true; 
        var filter = ["displayName", "name","phoneNumbers"]; 
        // navigator.contacts.find(filter, onSuccess, onError, options); 
    return { 
     getContactList : function(onSuccess, onError){ 
      navigator.contacts.find(filter,function(contacts){ 
       $rootScope.$apply(function(){ 
        onSuccess(contacts); 
       }) 
      }, function(){ 
       $rootScope.$apply(function(){ 
        onError(); 
       }) 
      }, options) 
     } 
    } 
}) 

然後在我的控制器:

$scope.get_contacts = function() 
{ 

    /*alert('get_contacts');*/ 

     try 
     { 

     ContactService.getContactList(function(contacts) 
     { 

但沒有什麼chages,我通過USB和Chrome檢查與控制檯中的變量與並且該數組具有thje值的fileld,但HTML不顯示數據。

+0

您沒有正確調用它,函數ContactService.getContactList(function(contacts)...'不正確,您需要像這樣調用它'ContactService.getContactList(function gotContacts(contactList ){...},函數errContacts(){...})', – t0mm13b

0

感謝您的幫助!

其實我的服務運行良好我不得不改變

這樣的:

<option ng-repeat="t in listecontacts" value="{{(t.phoneNumbers[0].value)}}" >{{(t.name.formatted)}}</option> 

這個

<option ng-repeat="t in listecontacts.liste_1" value="{{(t.phoneNumbers[0].value)}}" >{{(t.name.formatted)}}</option> 
因爲我用了一個對象,而不是一個數組的「listecontacts」

 $scope.listecontacts= { 
    liste_1: [] 
    };