更新联系人时,Phonegap contact.save重复phoneNumbers

use*_*665 5 javascript android ios cordova

我有Phonegap contacts.save的问题.当我创建一个联系人在iOS和Android中完美运行时,但是,当我尝试更新联系人时,有重复的文件作为phoneNumbers,电子邮件,网址,即时消息,地址,我正在使用Phonegap 2.1和Xcode 4.5.1.

有人可以帮我解决这个问题吗?我很感激你的时间.谢谢.

简历中:

  • navigator.contacts.create(); 工作正常.
  • 当我尝试更新联系人时,保存正确,但是,添加电话号码而不是更新.

我的代码是:

var options = new ContactFindOptions();
options.filter = 20;  //just it's an example. Looking for id 20.
var fields = ['id'];
var contact;   
navigator.contacts.find(fields,function(contacts){
    if (contacts.length==0) 
       contact = navigator.contacts.create();
    else
       contact = contacts[0];

    var tContactName = new ContactName();
    tContactName.givenName = 'Name';
    tContactName.LastName = 'LastName';
    contact.name = tContactName;    

    var tPhoneNumbers[2];
    tPhoneNumbers[0] = new ContactField('work', '123456789012',true);
    tPhoneNumbers[1] = new ContactField('home', '120987654321', false);
    contact.phoneNumbers = tPhoneNumbers;

    contact.save(function(contact) {
       navigator.notification.alert('Saved sucessfully!!!',function(){},'Title');
    }, function(contactError) {
       navigator.notification.alert('Error contact save: '+contactError.code,function(){},'Title');
    }
}, function(contactError) {
       navigator.notification.alert('Error contact find: '+contactError.code,function(){},'Title');
}, options);
Run Code Online (Sandbox Code Playgroud)

Sim*_*ald 1

该代码按照 W3C 联系人规范正确运行。但这并不意味着它有意义:)

无论如何,当您创建一个新的电话号码数组并将其设置为等于 contact.phoneNumbers 属性时,实际上您正在向联系人添加电话号码。如果您想编辑/替换现有电话号码,您需要请求将电话号码作为“字段”的一部分。然后,您需要循环遍历现有电话号码并根据需要进行编辑。

是的,这是违反直觉的,但这就是适合您的 W3C api。