我的Phonegap contacts.save存在问题。当我创建一个联系人在iOS和Android中完美运行时,但是,当我尝试更新联系人时,有重复的文件作为phoneNumbers,电子邮件,网址,即时消息,地址,我正在使用Phonegap 2.1和Xcode 4.5.1。< / p>
有人可以帮我解决这个问题吗?我很感激你的时间。感谢。
简历:
我的代码是:
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);
答案 0 :(得分:1)
根据W3C Contact规范,代码正是如何工作的。但这并不意味着它有意义:))
无论如何,当您创建新的电话号码数组并将其设置为等于有效的contact.phoneNumbers属性时,您将向联系人添加电话号码。如果您想编辑/替换现有的电话号码,您需要将电话号码作为&#34;字段&#34;的一部分。然后,您需要遍历现有的电话号码并根据需要进行编辑。
是的,这是违反直觉的,但这对你来说就是W3C api。
答案 1 :(得分:1)
您必须为已创建的电话号码联系人字段分配值,而不是使用新的ContactField 为电话号码再次创建新值。
以下是更新电话号码的示例
contact.tphoneNumbers[0].value = 123456789012
contact.tphoneNumbers[1].value = 120987654321
然后在更新时使用contact.phoneNumbers = tPhoneNumbers;
而不是直接调用save方法,就是这样。