在我的用例中,我有一个书面操作对话框,用作首次运行对话框,这样我就可以从用户那里获得服务器连接信息。我使用autoclosedisabled属性,因为我不希望用户在获取服务器详细信息之前单击关闭对话框。当用户提交详细信息时,我希望对话框保持打开状态,直到我从服务器收到通知应用程序详细信息有效的返回。然后我想用javascript关闭对话框,并对数据进行ajax调用。
html
<paper-action-dialog id="firstRun" autoclosedisabled transition="core-transition-center">
<custom-form></custom-form>
</paper-action-dialog>
目前我使用的是document.querySelector('core-overlay-layer').classList.remove('core-opened');
,它确实关闭了对话框,但看起来这会导致您尝试打开的任何对话框出现问题,也会导致祝酒词出现问题。然后你必须重新加载应用程序来纠正问题。
有没有用javascript关闭纸质对话框或纸质操作对话框?
我真的不太喜欢当用户点击提交时关闭对话框,如果由于任何原因提交失败,则再次打开对话框。
提前感谢
是的,只需像这样调用close方法即可。$。firstRun.close()
例如:https://github.com/Kalitte/polymer-router-demo/
除了其他答案外,您还可以使用标签上的"open"属性:
<paper-action-dialog opened="{{dialogOpen}}"></paper-action-dialog>
然后在js中的任何Polymer函数调用中,只需说:
foo: function(){
this.dialogOpen = true;
}
我喜欢这种方法,因为对我来说,它似乎更"聚合",因为它涉及到使用属性。不管怎样。
此外,另一种类似于之前答案的方法是在任何功能中使用Polymers神奇的$东西:
this.$.firstRun.toggle();
你可以用这个。$。id访问任何聚合物元素及其方法。
您尝试过元素的.thoggle()方法吗。您可以在聚合物就绪事件后访问元素
var el = document.getElementById('yourdialogid');
el.toggle()