Power-Bi JavaScript: выбраны данные-, нажата кнопка — событие не запущено

#javascript #powerbi-embedded

#javascript #powerbi-embedded

Вопрос:

Игровая площадка MS:https://microsoft.github.io/PowerBI-JavaScript/demo/v2-demo/index.html #

Контекст

  1. Отчет загружен правильно
  2. «Загруженные» и «Визуализированные» события запускаются правильно
  3. «powerbi-client»: «^2.7.0»,

Пример MS для прослушивания «Выбранных данных»

 // Get a reference to the embedded report HTML element
var embedContainer = $('#embedContainer')[0];

// Get a reference to the embedded report.
report = powerbi.get(embedContainer);

// Report.off removes a given event listener if it exists.
report.off("dataSelected");

// Report.on will add an event listener.
report.on("dataSelected", function(event) {
    Log.logText("Event - dataSelected:");
    var data = event.detail;
    Log.log(data);
});

// Select Run and select an element of a visualization.
// For example, a bar in a bar chart. You should see an entry in the Log window.

Log.logText("Select data to see events in Log window.");
  

Моя реализация на TypeScript

 const report: Embed = pbiService.embed(container, reportConfig);

report.on("dataSelected", event => {
  console.log("dataSelected", event);
});
report.on("buttonClicked", event => {
  console.log("buttonClicked", event);
});
  

Выводит правильное количество и названные обработчики событий:

 console.log(report.eventHandlers);
  

Проблема

«Выбранные данные» и «buttonClicked» никогда не запускаются.

Ответ №1:

В отчете pbix в настройке кнопки включите переключатель действий — это добавит действие к кнопке.

Я добавляю действие открыть закладку без ссылки на какую-либо закладку.

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

Ответ №2:

Вы создаете report объект типа Embed . Вы можете попробовать сделать это с Report типом, вот так:

 import { Report } from 'report'; // This is part of powerbi-client library

const report: Report = <Report> pbiService.embed(container, reportConfig));

report.on("dataSelected", event => {
  console.log("dataSelected", event);
});
report.on("buttonClicked", event => {
  console.log("buttonClicked", event);
});