Weibo Q&A 003- Как удалить дублирование из раскрывающихся вариантов

Я спроектировал источник данных, есть поле, в котором при вводе повторяются данные, я хочу использовать это поле как условие запроса, как удалить дублирующийся контент при выборе

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

1 Создайте источник данных

Войдите в консоль Weibo, нажмите «Новая модель данных»,
вставьте сюда описание изображения
введите имя и логотип
вставьте сюда описание изображения
, мы вводим два поля, а именно название проекта и имя задачи,
вставьте сюда описание изображения
возвращаемся к списку моделей данных, нажмите «Еще», нажмите «Управление данными»
вставьте сюда описание изображения
, чтобы ввести несколько тестовые данные
вставьте сюда описание изображения
Наша цель здесь - извлечь информацию о названии проекта и удалить дублирующийся контент.

2 Создание API

Мы можем создать API для дедупликации, нажмите API, нажмите Новые API,
вставьте сюда описание изображения
чтобы выбрать пользовательский код
вставьте сюда описание изображения
Введите имя и
вставьте сюда описание изображения
логотип Введите имя и логотип метода, введите следующий код
вставьте сюда описание изображения

module.exports = async function (params, context) {
    
    
  // 这里是方法入参
  const result = await context.callModel({
    
    
    name: 'xlxxsl_zyo3scs', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看
    methodName: 'wedaGetRecords', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法
    params: {
    
    }, // 数据模型方法的入参
  });

  let records = result.records.map((item)=>{
    
    
    return item.xmmc
  })
  let finallyarr = Array.from(new Set(records))
  console.log(records)
  // 这里返回数据,和出参结构映射
  return finallyarr.map((item)=>{
    
    
    return {
    
    
      "label":item,
      "value":item
    }
  });
};

Смысл кода, на первом этапе используем API модели данных для получения данных источника данных

 const result = await context.callModel({
    
    
    name: 'xlxxsl_zyo3scs', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看
    methodName: 'wedaGetRecords', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法
    params: {
    
    }, // 数据模型方法的入参
  });

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

let records = result.records.map((item)=>{
    
    
    return item.xmmc
  })

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

let finallyarr = Array.from(new Set(records))

Наконец, когда мы возвращаем результат, мы должны преобразовать данные в структуру объекта в соответствии с требованиями раскрывающегося компонента.метка — это отображаемое имя параметра, а значение — выбранное значение параметра.

return finallyarr.map((item)=>{
    
    
    return {
    
    
      "label":item,
      "value":item
    }
  });

После того, как код написан, нажмите тест метода, тест прошел успешно, нажмите сопоставление параметров
вставьте сюда описание изображения

3 Создайте страницу

Мы создаем страницу и помещаем в нее компонент раскрывающегося списка.
вставьте сюда описание изображения
Мы определяем переменную для получения данных из источника данных, выбираем массив для типа и вводим значение по умолчанию. Значение по умолчанию
вставьте сюда описание изображения
вводит следующие данные

[{
    
    "label":"","value":""}]

Открываем редактор кода, присваиваем данные API переменным в функции жизненного цикла
вставьте сюда описание изображения

export default {
    
    
  async onPageLoad(query) {
    
    
    //console.log('---------> LifeCycle onPageLoad', query)
    $page.dataset.state.projectitems = await app.cloud.callConnector({
    
    
      name:'getUniName_nvr1a98',
      methodName:'fileterArray',
      params:{
    
    

      }
    })
    console.log($page.dataset.state.projectitems)
  },
  onPageShow() {
    
    
    //console.log('---------> LifeCycle onPageShow')
  },
  onPageReady() {
    
    
    //console.log('---------> LifeCycle onPageReady')
  },
  onPageHide() {
    
    
    //console.log('---------> LifeCycle onPageHide')
  },
  onPageUnload() {
    
    
    //console.log('---------> LifeCycle onPageUnload')
  },
}

Затем привяжите данные к компоненту раскрывающегося списка и привяжите его как нашу переменную.
вставьте сюда описание изображения

окончательный эффект

вставьте сюда описание изображения

Подведем итог

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

Многие люди, которые еще не сталкивались с low-code, думают, что low-code — это просто перетаскивание для решения простых задач. На самом деле это недоразумение и неверная оценка. По сути, это набор онлайн-инструментов для разработки, которые можно написать как на переднем, так и на заднем концах. Просто сборка интерфейса производится визуальными средствами, что собственно и для повышения эффективности разработки. Если вы все еще ждете и наблюдаете, вы можете также открыть пробную учетную запись, испытать ее на себе и посмотреть, что может сделать low-code и в какой степени.

Guess you like

Origin blog.csdn.net/u012877217/article/details/129494042