我遇到的问题是,第一次打开纸质对话框时,该对话框无法在窗口中央打开。
如果您关闭并重新打开它,或者更改窗口大小,它就会弹出到位。
我花了整个晚上的时间来弄清楚为什么会发生这种情况以及如何解决它。我尝试过使用 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/