聚合物纸对话框第一次打开时不居中

polymer paper-dialog not centered when opened the first time

我遇到了一个问题,第一次打开 window 时,纸质对话框没有打开。

如果您关闭并重新打开它,或者您更改 window 大小,它会弹出到位。

我晚上大部分时间都在弄清楚为什么会发生这种情况以及如何解决它。我试过使用fit()center()等方法来操纵它的位置,但没有成功。对话停留在同一个地方。我试图在代码中移动它,但它没有改变任何东西。

我有一种直觉,这是由对话框中的 dom 重复步骤引起的。我在调用 dialog.open() 之前分配了 this.groupedHistory(用于用数据填充弹出窗口)。我看到 提到了 this.async() 但我不确定如何在这种情况下使用该方法。

站点:http://staging.g1c.apb.guru
粘贴:http://pastebin.com/t9QLwK8y 并点击计算以查看问题。

只需将您的 dialog.open() 调用包装在 this.async(function () {...}) 中?

<dom-module id="my-element">
  <template>
    ...
    <paper-dialog id="output">
      ...
    </paper-dialog>
  </template>
</dom-module>

<script>
  Polymer({
    is: "my-element",
    ...
    doSomething: function () {
      ...
      this.async(function () {
        this.$.output.open();
      });
    }
  });
</script>

Polymer 作为一个框架可以异步处理很多事情;放置 dialog.open() 调用可确保调用仅在微任务队列的 end 处运行 - 应该可以解决 99% 的问题。

如果没有,请尝试提供一个 jsbin 重现,以便其他人可以正确诊断。