Udostępnij za pośrednictwem


Korzystanie z osadzania fazowego

Osadzona analiza usługi Power BI powerbi.load i interfejsy API report.render mogą poprawić środowisko użytkownika końcowego, zapewniając deweloperom większą elastyczność osadzania raportów fazowych.

Zwykle raport osadzony jest ładowany przy użyciu powerbi.embed:

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

Osadzony raport ładuje i renderuje w interfejsie użytkownika. Następnie użytkownik końcowy widzi wszelkie interakcje z renderowanym raportem. Jeśli na przykład zastosujesz stan fragmentatora, użytkownik końcowy zobaczy, że fragmentator zostanie zastosowany po renderowaniu raportu.

Aby ukryć te interakcje przed użytkownikami końcowymi, interfejsy API powerbi.load i report.render dzielą proces osadzania na fazy. Funkcja powerbi.load ładuje raport, aby umożliwić interakcję z elementami, zanim użytkownicy końcowi zobaczą wyniki. Następnie funkcja report.render wyświetla raport.

Ładunek

Funkcja powerbi.load ładuje raport, ale go nie renderuje, więc interakcje mogą wystąpić przed wyświetleniem wyników przez użytkownika końcowego. Na przykład możesz użyć powerbi.load z report.getPages, a następnie określić, która strona ma być wyświetlana użytkownikowi końcowemu. Możesz też użyć page.getVisuals, a następnie zdecydować, które wizualizacje mają być wyświetlane lub ukrywane.

Podobnie jak powerbi.embed, funkcja powerbi.load wymaga elementu HTML i obiektu IEmbedConfiguration.

Po zakończeniu ładowania zostanie wyzwolony loaded zdarzenie.

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

Renderować

Jeśli używasz powerbi.load, należy wywołać funkcję report.render w funkcji obsługi zdarzeń loaded po uruchomieniu kodu. Użyj report.render, aby kontynuować renderowanie raportu i wyświetlić osadzony raport.

Zdarzenie rendered jest uruchamiane po zakończeniu renderowania raportu.

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

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

Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz Jak obsługiwać zdarzenia.

Przykład

Poniższy przykład kodu ładuje raport, ustawia filtry, a następnie renderuje filtrowany raport.

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

Zagadnienia i ograniczenia

Osadzanie etapowe może spowalniać renderowanie raportów, dlatego należy używać go poprawnie i tylko wtedy, gdy jest to potrzebne.

Następujące interfejsy API można wywołać po załadowaniu raportu i przed wywołaniem report.render:

Metoda Akcja
BookmarksManager.getBookmarks, BookmarksManager.apply Pobieranie i stosowanie zakładek. Przechwytywanie zakładek nie jest obsługiwane.
Report.updateSettings Aktualizowanie ustawień raportu.
Report.applyTheme Zastosuj motyw raportu.
Report.getFilters, Report.setFilters, Report.removeFilters Pobieranie, ustawianie i usuwanie filtrów raportów.
Report.getPages Pobierz strony raportu.
Page.setActive Ustaw aktywną stronę raportu.
Page.getFilters, Page.setFilters, Page.removeFilters Pobieranie, ustawianie i usuwanie filtrów stron.
Page.getVisuals Pobieranie wizualizacji strony.
Visual.getFilters, Visual.setFilters, Visual.removeFilters Pobieranie, ustawianie i usuwanie filtrów wizualizacji.
Visual.getSlicerState, Visual.setSlicerState Pobieranie i ustawianie stanu fragmentatora wizualizacji.