2015-06-27 23 views
0

保存後我需要找回聯繫人ID,以便將其保存到我的在線數據庫中。然而cordova contact.save()方法在執行後不會返回一個id。保存Cordova聯繫人插件後獲取contact.id

這裏是我的邏輯:

if ($scope.contact.id === undefined) { 
 
      contact.save(); 
 
      console.log("Contact ID is:", savedContact.id); 
 
      table.insert({ id: contact.id.value, firstname: name.givenName, lastname: name.familyName, homephone: phoneNumbers[0].value, mobilephone: phoneNumbers[1].value, email: emails[0].value }); 
 
     }

這是行不通的。

有什麼辦法來檢索聯繫人的ID,而不必使用這樣的電話號碼搜索手機聯繫人列表:

if ($scope.contact.id === undefined) { 
 
      contact.save(); 
 
      var savedContact = navigator.contacts.find({ "phoneNumbers[0]": phoneNumbers[0].value }); 
 
      console.log("Contact ID is:", savedContact.id); 
 
      table.insert({ id: contact.id.value, firstname: name.givenName, lastname: name.familyName, homephone: phoneNumbers[0].value, mobilephone: phoneNumbers[1].value, email: emails[0].value }); 
 
     }

上面好像太多高架。且不說它甚至有可能不會返回正確的接觸,電話號碼可能不是唯一的。(如果有人有不同的信息兩次保存聯繫人信息)

回答

1

contact.save()可以採取兩種回調,成功和失敗。成功的回調應該返回你剛剛保存的聯繫人(這將包括ID)。

if ($scope.contact.id === undefined) { 
    contact.save(contactSuccess, contactFailure); 
} 

function contactSuccess(newContact) { 
    console.log("Contact ID is:", newContact.id); 
    table.insert({ id: contact.id.value, firstname: name.givenName, lastname: name.familyName, homephone: phoneNumbers[0].value, mobilephone: phoneNumbers[1].value, email: emails[0].value }); 
} 

function contactError(err) { 
    //bb10 fires multiple error callbacks with empty errors 
    if (err) { 
    console.log(err); 
    } 
} 

因爲它看起來像您使用的角度,檢查出ngCordova項目。它爲一些插件提供了一些很好的包裝,使得所有的東西都更具可讀性。這裏是their contacts docs的相關摘錄:

$cordovaContacts.save($scope.contactForm).then(function(savedContact) { 
    console.log("Contact ID is:", newContact.id); 
    table.insert({ id: contact.id.value, firstname: name.givenName, lastname: name.familyName, homephone: phoneNumbers[0].value, mobilephone: phoneNumbers[1].value, email: emails[0].value }); 
}, function(err) { 
    if (err) { 
    console.log(err); 
    } 
}); 
+0

你是男人!我在下一個小時內檢查:D –

+0

如果它不適合你,請告訴我。 – laughingpine

+0

工作就像一個魅力!非常感謝。 –

相關問題