Gojs - 画布中的图表元素顺序在chrome和Mozilla之间有所不同

时间:2016-01-25 16:51:31

标签: javascript gojs

我有一个部分,其中有一个面板,其形状和svg图像添加到图表中。 接下来是nodetemplate,然后是groupTemplate。

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

2] myDiagram.nodeTemplate =

3] myDiagram.groupTemplate =

chrome 中的图表呈现方式为: enter image description here

Mozilla 中的图表呈现方式为: enter image description here

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

IE和Chrome中的渲染相同,但与mozilla不同。任何人都可以帮忙!!

由于

1 个答案:

答案 0 :(得分:1)

发生这种情况是因为Chrome的Array.sort不是一个稳定的类型。这意味着如果你必须对一个元素列表进行排序,并且没有标准来确定一个元素应该先于另一个元素,那么结果排序列表的排序顺序可能与它们的顺序不同。

解决方案是使用一些标准来对这些对象进行排序。您可以通过设置layout's comparer function

来完成此操作

默认情况下,比较器功能会查看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 })