Хобрук: Ваш путь к мастерству в программировании

AppMaker - лучший способ объединить два поля из источника данных для каждого элемента раскрывающегося массива имен?

У меня есть модель сотрудников со строковыми полями first_name и last_name (я буду использовать для примера Джона Доу). Я хотел бы, чтобы каждая строка раскрывающегося виджета читалась как «Доу, Джон» с использованием источника данных «Сотрудники». Я могу довольно легко привязать массив имен выпадающего виджета к одному или другому полю, отредактировав поле «names» виджета:

[email protected]_name дает Doe, а [email protected]_name дает John в первом элементе раскрывающегося списка, соответственно.

Также работает объединение статической строки с полем:

[email protected]_name + "-test" дает Doe-test в раскрывающемся списке

Однако когда я пытаюсь изменить эту привязку, чтобы объединить два поля, это не сработает:

[email protected]_name + ", " + @datasource.item.Employees.first_name дает только Доу

Даже выгружаем оба поля в массив и объединяем их:

=[@datasources.Employees.item.last_name, @datasources.Employees.item.first_name].join(", ") дает только Доу

Единственный способ получить значения двух разных полей из записи вместе в одной строке в раскрывающемся виджете - это использовать клиентский скрипт для заполнения массива имен виджета во время события onDataLoad:

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

Это лучший / единственный способ сделать это, или мне просто что-то не хватает в диалоговом окне привязки имен? Спасибо!


Ответы:


1

В вашем раскрывающемся списке имен выполните следующие действия:

(@datasources.Employees.items).map(function(i) { return i.last_name + ', ' + i.first_name; })

Это будет делать то, что вы хотите.

12.03.2019
  • that () перед .map () имеет значение, редактор просто не принимает выражение w / o (), а документ Google не уточняет это, спасибо Маркусу. 05.08.2019

  • 2

    Причина в том, что ожидаемое значение для имен:

    Необязательный массив меток опций, которые соответствуют 1–1 значениям опций. Это полезно, если значение, установленное в параметрах и значении, не является строкой, а вместо этого устанавливает некоторые базовые данные в бэкэнде. Например, если значение и параметры привязаны к записи, это можно использовать для отображения пользователю определенного поля записи.

    Итак, первое, что нужно принять во внимание, - какова привязка параметров раскрывающегося списка? Я предполагаю, что это было бы

    @datasource.Employees.items.

    Если это так, то следующее, что нам нужно принять во внимание, - это то, что вам необходимо предоставить массив, который соответствует точно такому же количеству элементов, что и параметры. К сожалению, это не тот случай, когда вы выполняете привязку так, как вы это делаете,

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

    Вы предоставляете только один элемент вместо массива, и это приведет к неожиданным результатам в зависимости от того, как настроены ваши источники данных. Однако, когда вы делаете это через клиентский скрипт, вы помещаете элементы в этот массив и соответствуете длине элементов источника данных options, поэтому он работает.

    Подход, который вы используете, хорош, за исключением того, что вам придется перезагружать источник данных каждый раз, когда происходит изменение. Лучше всего это сделать, следуя ответу, предоставленному Маркусом Малессой. Таким образом, вы предоставляете массив элементов, которые соответствуют 1–1 значениям параметров, и нет необходимости перезагружать источник данных каждый раз, когда происходит изменение.

    12.03.2019
    Новые материалы

    ВЫ РЕГРЕСС ЭТО?
    Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

    LeetCode Проблема 41. Первый пропущенный положительный результат
    LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

    Расистский и сексистский робот, обученный в Интернете
    Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

    Управление состоянием в микрофронтендах
    Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..

    Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
    LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

    Структуры данных в C ++ - Часть 1
    Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..