Phonegap Contacts API - 字段名称

时间:2012-05-22 22:17:15

标签: cordova contacts field

为什么这太难了?我想要的只是Phonegap Contacts API中的字段名称列表。你想的不是什么大不了的事,但事实上,这几乎是Phonegap文档中的一般问题:没有方法所采用参数的细节。这些例子并非详尽无遗,这使得用户可以在其他地方进行搜索。

所以我去http://www.w3.org/TR/2010/WD-contacts-api-20100121/#widl-ContactProperties-name看到标准字段是姓名,昵称,电话,电子邮件和地址。 Hmmmm!让我们看看这是否有效:

var fieldArray = new Array('name','displayName','phoneNumbers','addresses','emails');

for (i=0;i

for(j = 0; j < fieldArray.length; j++){

alert("Field Name: "+fieldArray[j]+"\n Data: "+contacts[i].name[0]+"\n Data: "+contacts[i].displayName);

alert("\n Name:  "+contacts[i].name[0]);    

}

alert("Field Name: "+fieldArray[j]+"\n Data: "+contacts[i].name[0]+"\n Data: "+contacts[i].displayName); alert("\n Name: "+contacts[i].name[0]);

没有机会。特别是,第二个警报 - contacts [i] .name [0] - 是我最感兴趣的那个。它只返回“undefined”。试过这个:contacts [i] .name [0] .value。纳达。

所以问题:联系人列表中的字段名称是什么,在Phonegap中有联系人的人可以问他们请对他们文档的糟糕状态做些什么。我会做志愿者,但我不具备做正义工作所需的Phonegap知识。

2 个答案:

答案 0 :(得分:1)

该应用程序如下所示:出于性能原因,我想将所有联系人详细信息放在SQLite数据库中,并允许我更轻松地操作数据。所以,我提取所有的联系人:

var options = new ContactFindOptions();

options.filter=""; // Note empty filter will pick up all contacts

options.multiple = true;

var fields = ["*"]; // Picks up all fields

navigator.contacts.find(fields, findSuccess, onError, options);

var options = new ContactFindOptions(); options.filter=""; // Note empty filter will pick up all contacts options.multiple = true; var fields = ["*"]; // Picks up all fields navigator.contacts.find(fields, findSuccess, onError, options);  然后我把它全部放在一个带有选定字段名称的数据库中:displayNmae,phoneNumbers,address,emails.What我真的想做什么虽然在所有字段中都是isiterate,并将数据粘贴到数据库中,并在findSuccess回调函数:

var contactsArray=new Array();
var contactFieldsArray = new Array('displayName','firstName','lastName' ...);
for(var i = 0; i < contacts.length;i++){
   for(var j = 0; j < contactFieldsArray.length; j++){
      if(contactFieldsArray[j].match(/(phoneNumbers)|(emails)/i){
         contactsArray,push(contacts[i].contactFieldsArray[j][0].value);
      }else{
          contactsArray.push(contacts[i].contactFieldsArray[j]);      
      }
   }
}
不幸的是,这需要一些可用字段的id。它必须比出现时更容易。

答案 1 :(得分:0)

首先,您正在查看旧版W3C Contact规范。你会想看看这个:

http://www.w3.org/TR/contacts-api/

关于联系人中哪些字段名称的问题,他们列在docs under the Contact object中。如果您想知道创建联系人,请不要使用“new Contact()”而是使用navigator.contacts.create()。基本上,您将对象文字传递给方法,并从对象中提取匹配属性并填充联系人。

我不确定您如何使用示例中的联系人数组,但如果您使用navigator.contacts.find(),则需要指定find应返回哪个contact fields。这是根据W3C规范,我不完全同意它,但我们尝试编码规范。

希望能回答你的问题,如果它不仅仅是我,我会尽力回答。