1

我的部分面板具有添加到图表的形状和 svg 图像。这之后是 nodetemplate,然后是 groupTemplate。

1] myDiagram.add($$(go.Part, "表",

2] myDiagram.nodeTemplate =

3] myDiagram.groupTemplate =

chrome中图表的渲染是: 在此处输入图像描述

Mozilla中的图表渲染是: 在此处输入图像描述

为什么Mozilla底部出现红色圆圈和文字......?

在 IE 和 Chrome 中的渲染是相同的,但在 Mozilla 中有所不同。谁能帮忙!!

谢谢

4

1 回答 1

1

发生这种情况是因为 Chrome 的Array.sort排序不稳定。这意味着,如果您必须对一个元素列表进行排序,并且没有标准来确定一个元素应该排在另一个之前,那么生成的排序列表可能会按照与它们进入的顺序不同的顺序进行排序。

解决方案是使用一些标准对这些对象进行排序。您可以通过设置布局的比较器功能来做到这一点。

默认情况下,比较器功能会查看Part.text,您的案例中尚未指定,因此您的每个部分都是等效的,因此 Chrome 的不稳定排序会混合它们的顺序,因为(如果它们是等效的),它认为这并不重要。

要解决此问题,请按您想要的顺序使用每个部分具有的东西,例如创建data.textdata.order或其他东西,并使用它进行比较:

// NOTE this assumes data.text exists!
// You could use anything as long as it describes the order
function myCompareFunction(a, b) {
  var at = a.data.text; 
  var bt = b.data.text;
  if (at < bt) return -1;
  if (at > bt) return 1;
  return 0;
}

然后在您的布局定义中添加:

        layout:
        $(go.GridLayout,
          { ....... comparer: myCompareFunction })
于 2016-01-25T17:37:06.047 回答