我有一个将使用firebase登录的应用。我正在使用聚合物火。有一个主应用元素:my-app
有这些孩子:
<firebase-app
auth-domain="my-app-ID.firebaseapp.com"
database-url="https://my-app-ID.firebaseio.com"
api-key="my-app-apikey">
</firebase-app>
<firebase-auth
id="auth"
user="{{user}}"
status-known="{{statusKnown}}"
provider="google"
on-error="handleError">
</firebase-auth>
<iron-pages selected="{{page}}" attr-for-selected="name">
<my-loading name="loading"></my-loading>
<my-home name="home"></my-home>
<my-dashboard name="dashboard"></my-dashboard>
</iron-pages>
page
使用statusKnown
元素的user
和firebase-auth
属性进行了更改。虽然statusKnown
为false
,但loading
页面可见。当statusKnown
为true
时,它会选择home
屏幕,user
为null
或用户dashboard
。
_signInChanged(statusKnown) {
if(this.statusKnown) {
if(this.user) {
this.page = "dashboard"
} else {
this.page = "home"
}
} else {
this.page = "loading"
}
}
home
屏幕上有一个登录按钮,然后点击它就必须调用firebase-auth
函数signInWithPopup()
。但无法从firebase-auth
元素访问my-home
元素。使用document.getElementByID
无法找到它或作为属性传递。或者以某种方式访问父指针this.parentElement.$.auth.signInWithPopup()
如何从孩子那里获得auth
元素?
答案 0 :(得分:2)
你可以采用不同的方式。感谢事件和监听器,您将能够将一些事件传播到父级,然后在parent-element中使用this.$.auth
访问firebase-auth。
所以:
在my-home
元素,当您准备调用firebase auth时,只需调用somethind,如:this.fire("logIn");
,并在ready
函数内的parent-elemet中写下:
this.addEventListener("logIn", function() {
this.$.auth.signInWithPopup();
}.bind(this));
就是这样。