2016-08-04 3 views
0

"Hello world" Onsen templateを使用してみましたが、GetContacts機能を使用してみると「連絡先の数」と「連絡先の名前」でした。Onsen UIテンプレートを使用して、バックエンドレスでユーザーの連絡先リストを取得して

連絡先リスト全体を取得するにはどうすればよいですか?

+0

ようこそ!私はあなたの問題を推測できる限りあなたの質問を編集しました。しかし、コードや説明を追加することで、より多くの人々がその知識を持つ人に見られるようになります。特定の問題を特定するために必要な場合は、特定のエラーメッセージを編集してください。がんばろう! – manetsus

答えて

0

このテンプレートは、コードバAPIの使用方法を簡単に示しています。だけではなく、あなたがすべてと何かを行うことができます唯一の第二のコンタクトを示すの - だからあなたの場合には、あなたが同じことを行うことができます

function getContacts() { 
    var options = new ContactFindOptions(); 
    options.filter = ""; 
    options.multiple = true; 
    navigator.contacts.find(["displayName", "name"], success, fail, options); 
} 

function success(contacts) { 
    alert(contacts.length + ' contacts returned.' + (contacts[2] && contacts[2].name ? (' Third contact is ' + contacts[2].name.formatted) : '')); 
} 

:あなたはあなたのようなものが表示されます言及した機能の実装を見てみるとそれらは:

function success(contacts) { 
    for (var i = 0; i < contacts.length; i++) { 
    console.log('contacts[' + i + '] = ' + contacts[i].name && contacts[i].name.formatted); 
    } 
} 

またnavigator.contacts.finddocumentationに興味があるかもしれません。

backendlessとの情報の接続に関しては、あなたはタイトルでしか言及せず、あなたがしたいことを正しく説明していません。また、データを取得し、2つの異なる問題のように私にそれを接続する。それを接続するために、データで何をしたいかについての詳細情報を提供する別の質問をすることができます。バックエンドコード(もしあれば)を表示することもできます。

+0

@llia正しい方向に私を導いてくれてありがとう。残念ながら、コードuはdidntの仕事を提供しましたが、それは私を助けました。私はこれを思いついて、ログにあるすべての「名前フィールド」の配列を取得しますが、電話番号を取得することはできません。私は成功なしでphoneNumbersを使ってみました。 – Bee

+0

@ビーあなたはそれがうまく動作するように管理されてうれしいです。おそらくあなたがiOSを使っているのであれば、おそらく 'displayName'がそこで動作していなかったでしょう。あなたは 'console.log'を使っているので、' console.log(contacts [i]) 'だけを実行することができ、使用可能なすべてのプロパティを見ることができます。何らかの理由であなたのコンソールが適切に接触を検査できない場合は、 'console.log(JSON.stringify(contacts [i])、null、2))'を試してみてください。 –

+0

@llia contacts [i]はとてもうまくいって、すべてのプロパティを与えてくれましたが、iOSだけでした。 Androidデバッガでは次のように表示されます:[Object Object] www/components/location.js:25 LT28at – Bee

0
function contacts_success(contacts) { 
    for (var i = 0; i < contacts.length; i++) { 
     console.log(
      contacts.length + ' contacts returned. ' + 
      (contacts[i] && contacts[i].name ? ('All contacts are ' + contacts[i].name.formatted) : '') 
     ); 
    } 
} 

function contacts_failed(msgObject) { 
    alert("Failed to access contact list:" + JSON.stringify(msgObject)); 
} 

function get_contacts() { 
    var obj = new ContactFindOptions(); 
    obj.filter = ""; 
    obj.multiple = true; 
    navigator.contacts.find([ "displayName", "name" ], contacts_success, contacts_failed, obj); 
} 
0

最終コード:これは、カンマ区切りのすべてのフィールドを私に与えるチャームのように機能しました。 Ilia Yatchevにおかげさまで!これらのconsole.logデータをバックエンドレスのデータベースにアップロードするためのソリューションを見つける必要があります。

function contacts_success(contacts) { 
    for (var i = 0; i < contacts.length; i++) { 
     console.log(contacts[i]); 
    } 
} 

function contacts_failed(msgObject){ 
    alert("Failed to access contact list:" + JSON.stringify(msgObject)); 
} 

function get_contacts() { 
    var obj = new ContactFindOptions(); 
    obj.filter = ""; 
    obj.multiple = true; 
    navigator.contacts.find(
      [ "displayName", "name", "phoneNumbers" ], contacts_success, 
      contacts_failed, obj); 
} 

Backendlessコード:スタックオーバーフローへ

Backendless.serverURL = "https://api.backendless.com"; 

Backendless.initApp(APPLICATION_ID, SECRET_KEY, VERSION); 

var $rootScope = window; 


function cleanPrivateRelations(data) { 
    function isObject(obj) { 
     return obj !== null && typeof obj === 'object'; 
    } 

    if (data.hasOwnProperty('_private_relations') &&  
     data['_private_relations'].length > 0) { 
     data['_private_relations'].forEach(function(relation) { 
      if (data.hasOwnProperty(relation) && isObject(data[relation])) { 
       if (Array.isArray(data[relation])) { 
        data[relation].forEach(function(elem) { 
         if (isObject(elem)) { 
          cleanPrivateRelations(elem); 
         } 
        }); 
       } else { 
        cleanPrivateRelations(data[relation]); 
       } 
      } 
     }); 
    } 

    if (isObject(data)) { 
     delete data['_private_relations']; 
     delete data['_private_geoRelations']; 
     delete data['_private_dates']; 
    } 
} 

$rootScope.Classes = { 
    contacts: function contacts(args) { 
     args = args || {}; 

     this.objectId = args.objectId || null; 
     this.updated = args.updated || null; 
     this.contacts = args.contacts || null; 
     this.ownerId = args.ownerId || null; 
     this.created = args.created || null; 

     this._private_relations = []; 
     this._private_geoRelations = []; 
     this._private_dates = ["updated", "created"]; 
     this.___class = "contacts"; 

     var storage = Backendless.Persistence.of(contacts); 

     this.save = function (async) { 
      cleanPrivateRelations(this); 
      storage.save(this, async); 
     }; 

     this.remove = function (async) { 
      var result = storage.remove(this, async); 
      this.objectId = null; 
      return result; 
     }; 

     this._private_describeClass = function() { 
      return Backendless.Persistence.describe(this.___class); 
     }; 
    } 
} 
+0

データのチャックを送信し、すべてのデータがサーバーに送信されるまで繰り返すようなバッチ処理を使用する必要があります。すべてのデータを一度に送信すると問題が発生します。 –

+0

@HardikVaghaniあなたは詳細を教えていただけますか?私は学習者です。以前これをやったことはありません。バックエンドレスコードを確認してください – Bee

関連する問題