【发布时间】:2019-12-11 21:25:10
【问题描述】:
这可能很容易令人尴尬,但我是新手,我已经为此苦苦挣扎了一段时间。我正在尝试做的基本上是“Hello App Maker!”的修改版本。否则测试。
必要的信息 我将以下小部件附加到相应的数据源:
- 名为
source_name(字符串-列表)的下拉小部件- 标签小部件我调用了
name(字符串)- 名为
qty_duration(数字)的文本框小部件- 标签小部件我调用了
hours(数字)
我有一个名为 source_name 的下拉小部件,有 5 个选项。在选择时,我的值出现在我称为name 的标签小部件中。如果从下拉小部件中选择的选项曾经是 LABOUR 我试图让名为 qty_duration 的文本框小部件的值出现在我称为 hours 的标签小部件中
在 source_name 下拉事件 - onValueChange 我有以下代码:
// Define variables for the input and output widgets
var nameWidget = app.pages.Apex_job_details.descendants.name;
var outputWidget = app.pages.Apex_job_details.descendants.hours;
var techhours = app.pages.Apex_job_details.descendants.qty_duration;
var nothing = 0;
// If a name is LABOUR, add the qty to the output widget Else output 0.
if (nameWidget == 'LABOUR') {
outputWidget.text = techhours;
} else {
outputWidget = nothing;
}
它没有给我任何错误,但它也没有输出到hours 标签。如果我按如下方式编辑代码只是为了搞砸它:
// Define variables for the input and output widgets
var nameWidget = app.pages.Apex_job_details.descendants.name;
var outputWidget = app.pages.Apex_job_details.descendants.hours;
var techhours = app.pages.Apex_job_details.descendants.qty_duration;
var nothing = 0;
// If a name is LABOUR, add the qty to the output widget Else output 0.
if (nameWidget == 'LABOUR') {
outputWidget.text = techhours;
} else {
outputWidget.text = nothing;
}
我不确定自己做错了什么。
【问题讨论】:
-
Techhours 是一个输入小部件,因此要获得它的价值,您需要使用
app.pages.Apex_job_details.descendants.qty_duration.value。 -
它只是告诉我...无法读取 Apex_job_details.Panel1.Panel5.Table1.Table1Body.Table1Row.Panel6.name_source.onValueChange:4:69 处未定义的属性“值”
-
这个文本框小部件是否也在表格行内?如果是这样,那是您所有问题的原因,因为表行小部件具有小部件名称,但它们不能像您正在做的那样被绝对引用引用,因为具有相同名称的小部件将位于行索引 0,行索引 1 等。 techhours 实际上指向什么?如果它是数据源中的字段值,则在引用表行中的任何内容时最好使用
widget.datasource.item.YourField。 -
是的,它在一张桌子上,是的,这是有道理的。 - 所以它应该阅读更多内容: ` // 为输入和输出小部件定义变量 var nameWidget = app.pages.Apex_job_details.descendants.name; var outputWidget = widget.datasource.item.hours; var techhours = widget.datasource.item.qty_duration;无变量 = 0; // 如果名称是 LABOUR,则将 qty 添加到输出小部件 Else output 0. if (nameWidget == 'LABOUR') { outputWidget.value = techhours.value; } else { outputWidget.value = nothing.value; } `
-
发布了可能的代码编辑作为答案。这是基于假设您的所有标签和输入都在表格行内。
标签: google-app-maker