【问题标题】:Very simple if else check in Google App Maker非常简单 if else 签入 Google App Maker
【发布时间】: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


【解决方案1】:

假设所有标签和输入小部件都在表格行内,您需要按如下方式调整代码:

var tablerow = widget.parent;
var nameWidget = tablerow.descendants.name.text;
var outputWidget = tablerow.descendants.hours;
var techhours = tablerow.descendants.qty_duration.value;

if(nameWidget === 'LABOUR') {
  outputWidget.text = techhours;
} else {
  outputWidget.text = null;
}

通过在下拉列表的 onValueChange 事件中使用 widget.parent,您将自动引用表格行,然后通过使用后代,您仅引用该表格行的后代。这将通过在使用表行时使用绝对引用来弥补错误。如果它仍然不起作用,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2011-09-06
    • 2021-03-07
    相关资源
    最近更新 更多