Verwenden von gestaffelter Einbettung

Die eingebetteten Power BI-Analysen powerbi.load und report.render -APIs können die Endbenutzererfahrung verbessern, indem Sie Entwicklern mehr Flexibilität beim Einbetten von Phasenberichten bieten.

Normalerweise laden Sie einen eingebetteten Bericht mit powerbi.embed:

let report = powerbi.embed(embedContainer, embedConfig);

Der eingebettete Bericht lädt und rendert auf der Benutzeroberfläche. Der Endbenutzer sieht dann alle Interaktionen mit dem gerenderten Bericht. Wenn Sie beispielsweise einen Datenschnittstatus anwenden, sieht der Endbenutzer, dass der Datenschnitt wirksam wird, nachdem der Bericht gerendert wurde.

Um diese Interaktionen vor Endbenutzern auszublenden, teilen die powerbi.load APIs und report.render den Einbettungsprozess in Phasen auf. Die powerbi.load Funktion lädt den Bericht, damit Sie mit Elementen interagieren können, bevor Endbenutzer die Ergebnisse sehen. Die report.render Funktion zeigt dann den Bericht an.

Laden

Die powerbi.load Funktion lädt den Bericht, rendert ihn jedoch nicht, sodass Interaktionen erfolgen können, bevor der Endbenutzer die Ergebnisse sieht. Sie können z. B. mit report.getPagesverwenden powerbi.load und dann angeben, welche Seite dem Endbenutzer angezeigt werden soll. Alternativ können Sie verwenden page.getVisualsund dann entscheiden, welche Visuals ein- oder ausgeblendet werden sollen.

Wie powerbi.embederfordert die powerbi.load Funktion ein HTML-Element und ein IEmbedConfiguration-Objekt .

Wenn der Ladevorgang abgeschlossen ist, wird ein loaded -Ereignis ausgelöst.

let config = {
    ...
};

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

// Load the report in the container.
let report = powerbi.load(embedContainer, config);

report.on('loaded', function() {
    ...
});

Rendern

Wenn Sie verwenden powerbi.load, müssen Sie die Funktion für die report.renderloaded Ereignishandlerfunktion aufrufen, nachdem Sie Ihren Code ausgeführt haben. Verwenden Sie report.render , um das Rendern des Berichts fortzusetzen und den eingebetteten Bericht anzuzeigen.

Ein rendered Ereignis wird ausgelöst, wenn das Rendern des Berichts abgeschlossen ist.

report.on('loaded', function() {
    report.render();
});

report.on('rendered', () => {
    ...
});

Weitere Informationen zum Behandeln von Ereignissen finden Sie unter Behandeln von Ereignissen.

Beispiel

Im folgenden Codebeispiel wird ein Bericht geladen, Filter festgelegt und anschließend der gefilterte Bericht gerendert.

// Build the config object.
let config = {
    type: 'report',
    tokenType: TokenType.Embed,
    accessToken: ...,
    embedUrl: ...,
    id: ...,
    ...
};
 
// Get a reference to the embedded report HTML element.
let embedContainer = $('#embedContainer')[0];

// Load the report in the container.
let report = powerbi.load(embedContainer, config);

...
report.on('loaded', async () => {
    await report.setFilters(filters);
    report.render();
});

Einschränkungen

Die phasenweise Einbettung kann das Rendern von Berichten verlangsamen. Achten Sie also darauf, dass Sie es ordnungsgemäß und nur dann verwenden, wenn Sie sie benötigen.

Sie können die folgenden APIs aufrufen, nachdem Sie den Bericht geladen haben und bevor Sie aufrufen report.render:

Methode Aktion
BookmarksManager.getBookmarks, BookmarksManager.apply Abrufen und Anwenden von Lesezeichen. Das Erfassen von Lesezeichen wird nicht unterstützt.
Report.updateSettings Aktualisieren der Berichtseinstellungen.
Report.applyTheme Wenden Sie das Berichtsdesign an.
Report.getFilters, Report.setFilters, Report.removeFilters Abrufen, Festlegen und Entfernen von Berichtsfiltern.
Report.getPages Rufen Sie die Berichtsseiten ab.
Page.setActive Legen Sie die aktive Berichtsseite fest.
Page.getFilters, Page.setFilters, Page.removeFilters Abrufen, Festlegen und Entfernen von Seitenfiltern.
Page.getVisuals Abrufen von Seitenvisuals.
Visual.getFilters, Visual.setFilters, Visual.removeFilters Abrufen, Festlegen und Entfernen von visuellen Filtern.
Visual.getSlicerState, Visual.setSlicerState Abrufen und Festlegen des visuellen Slicerzustands.

Nächste Schritte