javascript - 第一次打开时 polymer 纸对话框未居中

标签 javascript polymer polymer-1.0 paper-elements

我遇到的问题是,第一次打开纸质对话框时,该对话框无法在窗口中央打开。

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

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

我有一种直觉,这是由对话框中的 dom-repeat 步骤引起的。我在调用 dialog.open() 之前分配 this.groupedHistory (用于用数据填充弹出窗口)。我见过this question其中提到了 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() 调用可确保该调用仅在微任务队列的末尾运行 - 应该可以解决 99% 的问题。

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

关于javascript - 第一次打开时 polymer 纸对话框未居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33726131/

相关文章:

javascript - 在 Javascript 中等待异步函数调用的最有效方法是什么?

javascript - 重力如何影响矢量

javascript - 内容中的 polymer 点击事件不会触发?

javascript - polymer 2.x : Behavior mixins using class extension; error: Class constructor cannot be invoked without 'new'

javascript - Polymer 1.0 如何获取被点击的纸张按钮的id?

javascript - app-location 元素 {{route}} 是如何设置的?

javascript - 使用 jquery onclick 将网页滚动到 div

javascript - Angular 时区 CDT/CST 问题

javascript - polymer ,发送变量我正在设置到另一个元素中

css - Polymer 1.0 自定义样式