我使用的是钛3.3和合金1.4.1。用户应该可以通过他手机的地址簿向所有选定的人(这些人在一个名为"联系人"的阵列中)发送电子邮件。
用户可以在列表视图中选择和取消选择其地址簿中的姓名/电子邮件(链接屏幕截图中的黄色背景)。
截图: http://s30.postimg.org/rsa82u9qp/listview_checkbox.png
当检查复选框时,从地址簿中提取正确的信息(电子邮件)并添加到联系人数组中。所以通过复选框选择工作,但当取消选中该复选框时,不会从数组中删除电子邮件/项目。请参阅最后一个日志输入行:
Ti.API.info(JSON.stringify(contacts)+"这是匹配数组的 端&#34);
之前选择但现在取消选择的电子邮件仍在contacts数组中。
我也发现了这一点,但遗憾的是它并没有帮助。
代码:
$.listview.addEventListener('itemclick',function(e){
var item = e.section.getItemAt(e.itemIndex);
if (item.properties.accessoryType == Ti.UI.LIST_ACCESSORY_TYPE_NONE) {
item.properties.accessoryType = Ti.UI.LIST_ACCESSORY_TYPE_CHECKMARK;
Ti.API.info(item.textEmail.text + " this is item.textEmail.textinside adding if");
var added = item.textEmail.text;
if (!_.contains(contacts,added)) {contacts.push(added);
}
Ti.API.info(JSON.stringify(added) + " item 1 added");
Ti.API.info(contacts + " this is matches array inside adding if");
}
else {
item.properties.accessoryType = Ti.UI.LIST_ACCESSORY_TYPE_NONE;
var removed = item.textEmail.text;
contacts = _.without(contacts, removed);
//contacts.splice(removed);
Ti.API.info(JSON.stringify(removed) + " item 2 removed");
Ti.API.info(JSON.stringify(contacts) + " this is contacts in removing if case");
}
e.section.updateItemAt(e.itemIndex, item);
Ti.API.info(JSON.stringify(contacts) + " this is matches array at the end");
});
任何想法我在这里做错了什么?
答案 0 :(得分:0)
首先你应该有一个平面阵列(联系人):
var contacts = new Array();
...
然后添加/删除textEmail.text属性并正确搜索
if (item.properties.accessoryType == Ti.UI.LIST_ACCESSORY_TYPE_NONE)
{
item.properties.accessoryType = Ti.UI.LIST_ACCESSORY_TYPE_CHECKMARK;
var i;
for(i in item.textEmail.text) //item.textEmail.text is Object
{
if(contacts.indexOf(item.textEmail.text[i]) === -1)
{
contacts.push(item.textEmail.text[i]);
Ti.API.info(item.textEmail.text[i] + " item added");
}
}
Ti.API.info(contacts + " this is matches array inside adding if");
}
else
{
item.properties.accessoryType = Ti.UI.LIST_ACCESSORY_TYPE_NONE;
var i;
for(i in item.textEmail.text)
{
var p = contacts.indexOf(item.textEmail.text[i]);
if(p !== -1)
{
contacts.splice(p,1);
Ti.API.info(item.textEmail.text[i] + " item removed");
}
}
Ti.API.info(contacts + " this is contacts in removing if case");
}
//如果item.textEmail.text等于Email Person Object: {“work”:[“......”,“......”],“home”:[“...”,“......”]}
var i, j;
for(i in item.textEmail.text)
{
for(j = 0; j < item.textEmail.text[i].length; j++)
{
// Start Add Code
if(contacts.indexOf(item.textEmail.text[i][j]) === -1)
{
contacts.push(item.textEmail.text[i]);
} // End Add Code
// Start Remove Code
var p = contacts.indexOf(item.textEmail.text[i]);
if(p !== -1)
{
contacts.splice(p,1);
} // End Remove Code
}
}