AppMaker-组合下拉列表的名称数组中每个元素的数据源中两个字段的更好方法?

时间:2019-03-12 10:00:14

标签: drop-down-menu google-app-maker

我有一个带有first_namelast_name字符串字段的Employees模型(示例中将使用John Doe)。我想使用Employees数据源将下拉小部件的每一行读为“ Doe,John”。通过编辑小部件的“名称”字段,我可以轻松地将下拉小部件的名称数组绑定到一个字段或另一个字段:

=@datasources.Employees.item.last_name产生Doe,并且 =@datasources.Employees.item.first_name分别在下拉列表的第一个列表项中产生John。

将静态字符串连接到字段也可以:

=@datasources.Employees.item.last_name + "-test"在下拉菜单中进行Doe测试

但是,当我尝试修改此绑定以结合两个字段时,它不起作用:

=@datasources.Employees.item.last_name + ", " + @datasource.item.Employees.first_name仅产生Doe

即使将两个字段都转储到数组中并加入它们:

=[@datasources.Employees.item.last_name, @datasources.Employees.item.first_name].join(", ")仅产生Doe

我发现从下拉窗口小部件的同一行上的一条记录中同时获取两个不同字段的值的唯一方法是在onDataLoad事件期间使用客户端脚本填充窗口小部件的名称数组:

app.datasources.Employees.load(function() {
  app.datasources.Employees.items.forEach(
    item => widget.names.push([item.last_name, item.first_name].join(", "))
  );
});

这是最好/唯一的方法吗?还是我只是在名称绑定对话框中缺少某些内容?谢谢!

1 个答案:

答案 0 :(得分:1)

发生这种情况的原因是,名称的期望值为:

  

与1-1对应的选项标签的选项标签的可选数组。如果在options和value中设置的值不是字符串,而是在后端设置一些基础数据,则这很有用。例如,如果将值和选项绑定到记录,则可以将其用于向用户显示记录的某个字段。

因此首先要考虑的是,下拉选项的绑定是什么?我认为是

@datasource.Employees.items

如果是这样,我们需要考虑的下一件事是您需要提供一个与选项具有完全相同数量项匹配的数组。不幸的是,当您按照自己的方式执行绑定时,情况并非如此,

@datasources.Employees.item.last_name + ", " + @datasource.item.Employees.first_name

您仅提供一项而不是数组,这将产生意外结果,具体取决于您的数据源配置方式。但是,当您通过客户端脚本执行此操作时,您会将项目推入该数组并匹配options数据源的项目长度,因此可以正常工作。

您使用的方法很好,只是每次发生更改时都必须重新加载数据源。更好的方法是遵循Markus Malessa提供的答案。这样,您将提供一个与1-1对应的选项值的项目数组,并且无需每次更改时都重新加载数据源。

相关问题