2016-12-07 20 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: [] 
    };