Получить все контакты хотя бы один номер телефона в плагине ngCordova Contacts
Я использую плагин контактов ngcordova, чтобы получить контакты в приложении. Я хотел бы знать, возможно ли получить только контакты, которые имеют хотя бы один номер телефона.
Я использовал следующий код, он возвращает мои контакты Google, которые содержат электронную почту, но не номера телефонов. Но я хочу только доступный номер телефона, а не электронные письма. Это возможно? или любой другой вариант, доступный для получения этого результата.
$scope.getContactList = function() {
$ionicLoading.show({
template: 'Loading...'
});
var options = {};
options.multiple = true;
options.hasPhoneNumber = true;
options.fields = ['name.formatted', 'phoneNumbers'];
$cordovaContacts.find(options).then(function(result) {
$scope.contacts = result;
$ionicLoading.hide();
}, function(error) {
console.log("ERROR: " + error);
});
}
2 ответа
Я получил решение без использования каких-либо внешних JS, код, который выглядит следующим образом:
$scope.getContactList = function() {
$scope.contacts = [];
$ionicLoading.show({
template: 'Loading...'
});
var options = {};
options.multiple = true;
$cordovaContacts.find(options).then(function(result) {
for (var i = 0; i < result.length; i++) {
var contact = result[i];
if(contact.phoneNumbers != null)
$scope.contacts.push(contact);
}
$ionicLoading.hide();
}, function(error) {
console.log("ERROR: " + error);
});
}
Я бы предложил использовать http://underscorejs.org/ для фильтрации результатов контактов. Нечто подобное должно соответствовать вашим потребностям:
$scope.getContactList = function() {
$ionicLoading.show({
template: 'Loading...'
});
var options = {};
options.multiple = true;
options.hasPhoneNumber = true;
options.fields = ['name.formatted', 'phoneNumbers'];
$cordovaContacts.find(options).then(function(result) {
$scope.contacts = result;
var contactsWithAtLeastOnePhoneNumber = _.filter(result, function(contact){
return contact.phoneNumbers.length > 0
});
//
// Contacts with at least one phone number...
console.log(contactsWithAtLeastOnePhoneNumber);
$ionicLoading.hide();
}, function(error) {
console.log("ERROR: " + error);
});
}
Поскольку phoneNumbers
массив может быть возвращен и быть пустым, этот быстрый метод гарантирует, что присутствует хотя бы одна запись.