我正在使用ngcordova contacts plugin来检索应用中的联系人。我想知道是否有可能只获得至少有一个电话号码的联系人。
我使用以下代码,它返回我的谷歌联系人,其中包含电子邮件但不包含电话号码。但我只想要可用的电话号码而不是电子邮件。 这可能吗 ?或任何其他可用于获得此结果的选项。
Dictionary<long, List<object>> requestObject = new Dictionary<long, List<object>>();
List<object> listrequestObjects = new List<object>();
Request requestOb = new Request();
requestOb.order_id = 2372;
requestOb.action = "REQUEST_LABELS";
listrequestObjects.Add(requestOb);
requestObject.Add(2352635, listrequestObjects);
string requesttest = JsonConvert.SerializeObject(requestObject);
答案 0 :(得分:2)
我建议使用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
数组可以返回并且为空,因此这种快速方法可确保至少存在一个条目。
答案 1 :(得分: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);
});
}