使用階段式內嵌
Power BI 內嵌式分析 powerbi.load
和 report.render
API 可藉由讓開發人員更有彈性地進行階段報表內嵌,以改善用戶體驗。
一般而言,您會使用 powerbi.embed
載入內嵌報表:
let report = powerbi.embed(embedContainer, embedConfig);
內嵌報表會在使用者介面中載入和轉譯。 用戶接著會看到與轉譯報表的任何互動。 例如,如果您套用交叉分析篩選器狀態,使用者會看到交叉分析篩選器在報表轉譯之後生效。
若要隱藏終端使用者的這些互動,powerbi.load
和 report.render
API 會將內嵌程式分解成階段。
powerbi.load
函式會載入報表,讓使用者可以在看到結果之前與項目互動。
report.render
函式接著會顯示報表。
powerbi.load
函式會載入報表,但不會轉譯報表,因此使用者可以在看到結果之前進行互動。 例如,您可以使用 powerbi.load
搭配 report.getPages
,然後指定要顯示終端用戶的頁面。 或者,您可以使用 page.getVisuals
,然後決定要顯示或隱藏的視覺效果。
如同 powerbi.embed
,powerbi.load
函式需要 HTML 元素和 IEmbedConfiguration 物件。
載入完成時,會引發 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() {
...
});
如果您使用 powerbi.load
,則必須在執行程式代碼之後,在 loaded
事件處理程式函式上呼叫 report.render
函式。 使用 report.render
繼續報表轉譯並顯示內嵌報表。
當報表完成轉譯時,就會引發 rendered
事件。
report.on('loaded', function() {
report.render();
});
report.on('rendered', () => {
...
});
如需處理事件的詳細資訊,請參閱 如何處理事件。
下列程式代碼範例會載入報表、設定篩選,然後轉譯篩選的報表。
// 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();
});
階段式內嵌可以減緩報表轉譯的速度,因此請務必正確使用,而且只有在您需要時才使用。
您可以在載入報表之後以及呼叫 report.render
之前呼叫下列 API:
方法 | 行動 |
---|---|
BookmarksManager.getBookmarks、 BookmarksManager.apply | 取得並套用書籤。 不支援擷取書籤。 |
Report.updateSettings | 更新報表設定。 |
Report.applyTheme | 套用報表主題。 |
Report.getFilters、Report.setFilters、Report.removeFilters | 取得、設定及移除報表篩選。 |
Report.getPages | 取得報表頁面。 |
Page.setActive | 設定使用中的報表頁面。 |
Page.getFiltersPage.setFiltersPage.removeFilters | 取得、設定和移除頁面篩選。 |
Page.getVisuals | 取得頁面視覺效果。 |
Visual.getFiltersVisual.setFiltersVisual.removeFilters | 取得、設定及移除視覺效果篩選。 |
Visual.getSlicerState、Visual.setSlicerState | 取得和設定可視化交叉分析篩選器狀態。 |
- 使用書籤增強用戶體驗
- 在 Power BI 中套用報表主題
- 控件報表篩選
- 控制報表交叉分析篩選器
- 取得頁面和視覺效果