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

时间:2015-11-15 23:00:22

标签: javascript polymer polymer-1.0 paper-elements

我有一个纸质对话框的问题,当它第一次打开时,它不会在窗口中央打开。

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

我花了大部分时间来弄清楚为什么会发生这种情况以及如何解决这个问题。我已经尝试使用方法fit()center()等来操纵它的位置,但它没有做到这一点。对话框保持在同一位置。我试图在代码中移动它,但它没有改变任何东西。

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

网站:this question
粘贴于此:http://staging.g1c.apb.guru并点击计算以查看问题。

1 个答案:

答案 0 :(得分:2)

只需将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>

聚合物作为一个框架不同寻常地做很多事情;发出dialog.open()电话会确保呼叫仅在微任务队列的结束处运行 - 应解决99%的问题。

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