我正在尝试使用Microsoft的PowerBi-Javascript库在网页中嵌入报表。我想在加载时应用切片器,这取决于我所在的实际页面(因此默认情况下无法在报表上完成)。
库 wiki 提供了一种通过在传递给嵌入函数的配置中设置切片器来执行此操作的方法。切片器对象如下所示(来自文档 https://github.com/Microsoft/PowerBI-JavaScript/wiki/Slicers):
interface ISlicer {
// Selects a slicer to change.
selector: SlicerSelector;
// A new state of the slicer
state: ISlicerState;
}
interface ISlicerSelector {
$schema: string;
visualName: string;
}
我很高兴使用给出的过滤示例设置状态,但是我在查找选择器的visualName时遇到了问题-我在界面中看不到它(查看或编辑时),并且我尝试使用名称/标题等我可以看到,这些都不起作用。
如何找出和/或设置此可视化名称是什么?
我没有在 UI 中找到查看此内容的方法。希望有比下面更好的方法,但这确实有效。
但是,可以使用 API 找到答案,或者如果您能够在本地运行一些代码,则可以使用此库。
就我而言,我发现(在本地开发时)查找页面,然后在呈现报表后显示的视觉对象,将数据记录到控制台,并确定哪个视觉对象是我想要的视觉对象。
像这样:
report.on('rendered', () => {
report.getPages().then(pages => {
pages[0].getVisuals().then(visuals => console.log(visuals))
});
});
在这种情况下,我只关心第一页。
然后,这会将有关每个视觉对象的一些数据记录到控制台,包括坐标值和 visualName,以便我能够识别我感兴趣的视觉对象并查看其 visualName 属性。
令人困惑的是,visualName 属性看起来更像是一个 id(尽管不是 guid)。
切片器上的"常规>标题">"文本"下设置视觉对象标题(而不是切片器标题)。截图
然后,可以使用 visual.title
属性找到切片器。
例如
report.on('rendered', () => {
report.getPages().then(pages => {
pages[0].getVisuals().then(visuals => console.log(
visuals.find(visual => visual.title === "MySlicer")
);
});
});