我有一个polymer starter kit应用,其中包含多条子路线以及与这些路线相关的各种类型的记录。示例网址可能是//myapp/records/{recordId}/subRoute
。我希望应用程序状态继续重新加载。我试过这样:
<app-route
route="{{route}}"
pattern="/records/:recordId"
data="{{routeData}}"
tail="{{subroute}}"
></app-route>
<app-route
route="{{subroute}}"
pattern="/:page"
data="{{subRouteData}}"
></app-route>
<firebase-document
id="recordsDocument"
path="/records/[[routeData.recordId]]"
data="{{record}}"
></firebase-document>
...
<script>
routePageChanged(page) { // takes subRouteData.page
if (!user) {
set('page', 'login'),
} else if (!routeData.recordId) {
set('page', 'start')
} else {
set('page', page)
}
}
</script>
但是在这些情况下,浏览器将始终在登录页面上,因为在firebase响应用户之前调用了routePageChanged。
如果在firebase响应之前该对象不存在时,如何从依赖于auth'd firebase user
存在的地址栏路由中正确加载我的应用程序?
答案 0 :(得分:0)
你可以做几件事。由于您正在等待用户,因此需要初始化用户对象。
在firebase-auth中,有一个用户对象:
user: {
type: Object,
readOnly: true,
value: null,
notify: true
},
您可以侦听该对象的更改。
另一种方法是像这样处理它:
this.$.auth.signInWithPopup()
.then(function(response) {// successful authentication response here})
.catch(function(error) {// unsuccessful authentication response here});
如果上述代码成功,则应设置用户对象,您可以使用该对象检查初始路由。
我无法想到任何其他选择。
除此之外,我必须推荐文档,当然:P
https://github.com/firebase/polymerfire/blob/master/firebase-auth.html