我遇到了一个纸对话框的问题,当它第一次打开时,它没有在窗口的中心打开。
如果你关闭并重新打开它,或者你改变窗口大小,它就会弹出到位。
我花了大半个晚上的时间来弄清楚为什么会发生这种情况以及如何解决它。我试过使用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>
聚合物作为一个框架,异步地做许多事情;放置dialog.open()
调用可确保该调用仅在微任务队列的端运行-应该可以解决99%的问题。
如果没有,请尝试提供一个jsbin-rep,以便其他人能够正确诊断。