我在appmaker中有一个表,其中添加了复选框,就像这样:
我想获取用户检查的全部电子邮件列表。此时,我什至无法访问单个复选框的状态。这是我尝试添加到按钮中的当前代码段:
console.log(widget.parent.parent.parent.children.Panel1.children.Table3Panel.children.Table3.children.Table3Body.children.Table3Row.children.UserSelectionCheckbox.value);
我得到了错误:
Cannot read property 'children' of undefined
at Home.Panel1.OuSelectPanel1.Button6.onClick:1:133
我能够使用自动填充功能来编写整个语句,为什么找不到子对象?有什么方法可以直接引用此列表,而无需从小部件或应用程序根目录下查找树状结构?
答案 0 :(得分:2)
对于这种类型的功能,自动填充(智能)功能不适用于您。当您尝试从表中获取行集合时,需要对子项进行不同的处理。对于您的按钮onClick事件,我建议使用与此类似的代码:
var rows = widget.root.descendants.Table3Body.children._values;
var emails = [];
for (var i in rows) {
var value = rows[i].children.Checkbox1.value;
if (value) {
emails.push(rows[i].datasource.item.Email);
}
}
console.log(emails);
选择_values后,再次使用自动完成代码功能将不起作用,这将返回表主体的所有直接子代,这就是您想要的。
答案 1 :(得分:0)
基于1:133,似乎是说Table3Row没有子级。我想知道是否可以使用widget.root.descendants.Table3Row处理特定表的方式有所不同。