以下是来自IVisual接口的enumerateObjectInstances的规范:
/** Gets the set of objects that the visual is currently displaying. */
enumerateObjectInstances?(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration;
我看到的每个示例和内置的IVisual都实现了自己的enumerateObjectInstances。通过查看每个,它的作用是建立并返回关于视觉显示的一些或所有视觉对象的信息数组,通常根据给予方法的参数进行过滤。但是在基本操作中似乎没有调用该方法。它的目的是什么,仅用于测试吗?
答案 0 :(得分:4)
好的,回答我自己的问题。 AsterPlot自定义视觉有助于解释enumerateObjectInstances的作用,因为它有一个注释:
// This function retruns the values to be displayed in the property pane for each object.
// Usually it is a bind pass of what the property pane gave you, but sometimes you may want to do
// validation and return other values/defaults
public enumerateObjectInstances... {
var instances: VisualObjectInstance[] = [];
switch (options.objectName) {
case 'label':
...
instances.push(label);
break;
case 'outerLine':
...
instances.push(outerLine);
break;
}
return instances;
}
重要的是,那些切换案例“label”和“outerLine”与AsterPlot的功能对象中的属性名称相匹配:
public static capabilities: VisualCapabilities = {
...
objects: {
...
label: {
...
},
outerLine: {
...
}
}
};
因此,Power BI应用程序使用enumerateObjectInstances来填充和挂钩视觉的格式窗格。在AsterPlot的示例中,如果删除enumerateObjectInstances,则无法切换外线是否显示。