Как вызвать функцию из Cell Renderer - ag grid

я использую cellrenderer в vue.js, я хочу вызвать функцию из средства визуализации ячеек.

прикрепил сюда мой код:

gridColumns() {
  return [{
      headerName: "Actions",
      cellRenderer: 'iconRender',
      width: 140,
      cellRendererParams: (params) => {
        return {
          icon: ['edit', 'delete_forever'],
          color: 'gray'
        }
      }
    },
    {
      headerName: "Name",
      field: "name"
    },
    {
      headerName: "Artiyfactory Name",
      field: "artifactoryName"
    },
    {
      headerName: "Artifact Type",
      field: "artifactType"
    },
    {
      headerName: "Deployment Action",
      field: "deploymentAction"
    },
    {
      headerName: "Location",
      field: "usage.location"
    },
    {
      headerName: "Destenition On Setup",
      field: "usage.destOnSetup"
    },
  ]
}
},

function iconRender(params) {
  var spanElement = document.createElement("span");
  var textElement = document.createElement("span");
  if (params.value != undefined) {
    textElement.innerHTML = " " + params.value;
    textElement.style.verticalAlign = "middle";
  }
  params.icon.forEach(element => {
    var iconElement = document.createElement("i");
    iconElement.className = "material-icons";
    iconElement.style.color = params.color;
    iconElement.style.verticalAlign = "middle";
    iconElement.innerHTML = element;
    spanElement.appendChild(iconElement);
  });
  spanElement.appendChild(textElement);
  return spanElement;
}

Я хочу вызвать функцию из элемента значка, я пробовал несколько способов, но у меня ничего не работает.

не могли бы вы взглянуть и сказать мне, как я могу это сделать?

Спасибо :)

вам может повезти привязать функцию к атрибуту при объявлении ColDef следующим образом: {cellRenderer: this.iconRender.bind(this)}

brooklynDadCore 14.12.2020 21:46

Спасибо!, не могли бы вы сказать мне, что я должен написать в iconRender, чтобы вызвать myfunc()?

user 14.12.2020 21:51

когда вы передаете определение столбца экземпляру ag-grid, ваша функция будет привязана к атрибуту cellrenderer для этого столбца. Поэтому, когда в жизненном цикле сборки он проверяет значение в cellRenderer, он увидит вашу функцию и затем запустит ее.

brooklynDadCore 14.12.2020 21:54

но я не понимаю, как я вызываю функцию, я хочу вызвать функцию сом при нажатии на значок

user 14.12.2020 21:57

ах - тогда вам нужно прикрепить обработчик кликов. GridOptions имеет атрибут onCellClicked, и там вы назначите функцию.

brooklynDadCore 14.12.2020 22:02

я не хочу щелкать по ячейке, я хочу щелкать по иконке... возможно ли это?

user 14.12.2020 22:03

тогда вы можете назначить обработчик кликов через дом, но это может повлиять на производительность

brooklynDadCore 14.12.2020 22:04

что значит "дом"?

user 14.12.2020 22:05

Объектная модель документа developer.mozilla.org/en-US/docs/Web/API/Document_Object_Mod‌​el/…

brooklynDadCore 14.12.2020 22:06

это может работать params.icon.forEach(element => { var iconElement = document.createElement("i"); iconElement.className = "material-icons"...... iconElement.addEventListener('click', () => ВАША ФУНКЦИЯ) spanElement.appendChild(iconElement);});

brooklynDadCore 14.12.2020 22:07

все еще не работает :(

user 14.12.2020 22:13

ag-grid.com/javascript-grid-events

brooklynDadCore 14.12.2020 22:18
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
12
3 187
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо создания элемента через dom. вы можете создать пользовательский компонент для ячейки. в ag-grid, когда вы нажимаете на ячейку, это только событие захвата ячеек, а не то, что находится внутри ячейки (в вашем случае значок). Вы можете создать пользовательский компонент для визуализации ячейки, и вы можете делать все, как обычный компонент. Пожалуйста, обратитесь к [https://plnkr.co/edit/3nZPzwmGufKGXwvn], я комментирую плункер, пожалуйста, обратитесь к последнему столбцу, где у них есть кнопка.

Другие вопросы по теме