Condividi tramite


Usare l'incorporamento in più fasi

Le API di analisi incorporata di Power BI powerbi.load e report.render possono migliorare l'esperienza degli utenti finali offrendo agli sviluppatori maggiore flessibilità per l'incorporamento dei report in più fasi.

In genere, si carica un report incorporato usando powerbi.embed:

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

Il report incorporato carica ed esegue il rendering nell'interfaccia utente. L'utente finale visualizza quindi tutte le interazioni con il report sottoposto a rendering. Ad esempio, se si applica uno stato del filtro dei dati, l'utente finale vede che il filtro dei dati diventa effettivo dopo il rendering del report.

Per nascondere queste interazioni agli utenti finali, le API powerbi.load e report.render suddividere il processo di incorporamento in fasi. La funzione powerbi.load carica il report in modo da poter interagire con gli elementi prima che gli utenti finali visualizzino i risultati. La funzione report.render visualizza quindi il report.

Carico

La funzione powerbi.load carica il report ma non lo esegue, quindi le interazioni possono verificarsi prima che l'utente finale visualizzi i risultati. Ad esempio, è possibile usare powerbi.load con report.getPagese quindi specificare quale pagina visualizzare l'utente finale. In alternativa, è possibile usare page.getVisualse quindi decidere quali oggetti visivi visualizzare o nascondere.

Come powerbi.embed, la funzione powerbi.load richiede un elemento HTML e un oggetto IEmbedConfiguration.

Al termine del caricamento, viene generato un evento loaded.

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() {
    ...
});

Rendere

Se si usa powerbi.load, è necessario chiamare la funzione report.render nella funzione del gestore eventi loaded, dopo aver eseguito il codice. Usare report.render per continuare il rendering del report e visualizzare il report incorporato.

Un evento rendered viene generato al termine del rendering del report.

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

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

Per altre informazioni sulla gestione degli eventi, vedere Come gestire gli eventi.

Esempio

Nell'esempio di codice seguente viene caricato un report, vengono impostati i filtri e quindi viene eseguito il rendering del report filtrato.

// 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();
});

Considerazioni e limitazioni

L'incorporamento in più fasi può rallentare il rendering del report, quindi assicurarsi di usarlo correttamente e solo quando è necessario.

È possibile chiamare le API seguenti dopo aver caricato il report e prima di chiamare report.render:

Metodo Azione
BookmarksManager.getBookmarks, BookmarksManager.apply Ottenere e applicare segnalibri. L'acquisizione di segnalibri non è supportata.
report.updateSettings Aggiornare le impostazioni del report.
Report.applyTheme Applicare il tema del report.
Report.getFilters, Report.setFilters, Report.removeFilters Ottenere, impostare e rimuovere i filtri del report.
Report.getPages Ottenere le pagine del report.
Page.setActive Impostare la pagina del report attiva.
Page.getFilters, Page.setFilters, Page.removeFilters Ottenere, impostare e rimuovere filtri di pagina.
Page.getVisuals Ottenere oggetti visivi di pagina.
Visual.getFilters, Visual.setFilters, Visual.removeFilters Ottenere, impostare e rimuovere filtri visivi.
Visual.getSlicerState, Visual.setSlicerState Ottenere e impostare lo stato del filtro dei dati visivo.