我有一个带有 first_name
和 last_name
字符串字段的 Employees 模型(我将使用 John Doe 作为示例)。我希望使用 Employees 数据源让下拉小部件的每一行都显示为“Doe, John”。通过编辑小部件的“名称”字段,我可以很容易地将下拉小部件的名称数组绑定(bind)到一个或另一个字段:
=@datasources.Employees.item.last_name
产生 Doe,并且
=@datasources.Employees.item.first_name
分别在下拉列表的第一个列表项中生成 John。
将静态字符串连接到字段也可以:
=@datasources.Employees.item.last_name + "-test"
在下拉列表中产生 Doe-test
但是,当我尝试修改此绑定(bind)以组合这两个字段时,它不起作用:
=@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(", "))
);
});
这是执行此操作的最佳/唯一方法,还是我只是在名称绑定(bind)对话框中遗漏了一些内容?谢谢!
最佳答案
在您的下拉名称绑定(bind)中执行以下操作:
(@datasources.Employees.items).map(function(i) { return i.last_name + ', ' + i.first_name; })
这会做你想做的事。
关于drop-down-menu - AppMaker - 将数据源中每个下拉列表名称数组元素的两个字段组合起来的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55118699/