聚合物1.x+;Firebase 2.x:Firebase数据不会在登录后的第一次渲染中加载
在用户登录事件后页面的第一次加载上,我想用存储在我的Firebase中的一组对象填充聚合物1.x+;Firebase 2.x:Firebase数据不会在登录后的第一次渲染中加载,firebase,polymer,firebase-realtime-database,firebase-polymer,polymerfire,Firebase,Polymer,Firebase Realtime Database,Firebase Polymer,Polymerfire,在用户登录事件后页面的第一次加载上,我想用存储在我的Firebase中的一组对象填充项属性 A实现了我想要的行为 A. D ... 特性:{ 路径:{ 类型:字符串, 值:函数(){ 返回“widgets”; }, } }, ... 此外,在聚合物松弛网站上,@will在中国表示: 我在第一次加载数据时遇到了问题,我发现如果我没有对同一路径的多个引用,我就不会遇到这个问题 我不确定这在这里意味着什么,因为我的元素(和应用程序)中只有一个引用指向firebase query元素中的路径path
项
属性
A实现了我想要的行为
A.
D
...
特性:{
路径:{
类型:字符串,
值:函数(){
返回“widgets”;
},
}
},
...
此外,在聚合物松弛网站上,@will在中国表示:
我在第一次加载数据时遇到了问题,我发现如果我没有对同一路径的多个引用,我就不会遇到这个问题
我不确定这在这里意味着什么,因为我的元素(和应用程序)中只有一个引用指向
firebase query
元素中的路径path=“widgets”
。我不认为这是您的具体问题,但在登录->setNewRoute(下一页)之后可能类似我没有得到渲染,我将随后的模板(Iron Ajax)更改为手动触发,而不是通过观察者触发
loggon: function parseLogin(user, password) {
...
Parse.User.logIn(_user, _pass).then(function() {
page('/channels');
---
channels.render ...
_render: function() {
console.log('_render');
this.$.get_channlinq.headers = hdr;
//xhr params
var body = this._setQry(this.params.channelId);
this.$.get_channlinq.body = JSON.stringify(body);
//fetch , load , template will render
this.$.get_channlinq.generateRequest();
“使用时,我希望看到items对象填充,但是
items对象为空。但是,如果我手动刷新浏览器
(不注销)元素的行为与预期的一样
注销(然后在注销时刷新),问题再次出现,直到我
重新加载。”
我在我的应用程序中看到了类似的行为。在我的例子中,它与firebase身份验证和firebase查询竞争条件有关。就我而言
sign:function(){
var email=this.user.email;
var password=this.user.password;
此.$.auth.signiWithEmailandPassword(电子邮件,密码)
.然后(功能(响应){
self.disabled=false;
//console.log('登录',响应);
})
.catch(函数(错误){
log('auth-element:signIn error is',error.detail);
})
.然后(函数(){
//调用其他函数
});
},
handleError:函数(错误){
log('error message',error.detail.message);
},
我要迟到了,但我使用dom if condition if user解决了这个问题
这可以防止在没有用户身份验证的情况下发出请求您是否排除了获取时与http/cache相关的本地主机问题?我不认为会是这样,但至少将确保您的浏览器已配置的标准问题放在一边,这样缓存就不会带来额外的麻烦。是否存在与http/cache相关的XHR代码获取?我这么说是因为我认为在模板代码中,您可以在[[items]]上手动触发/重新触发获取不要依赖绑定对象上的生命周期观察者文档?@RobertRowntree:删除我之前的评论。我还没有找到解决方案。我只是认为我找到了。不,没有与获取相关的XHR代码。你能在第二条评论中解释你的想法吗?我如何排除本地主机问题?我的意思是,我清除了cac但除此之外,我还有什么可以做的吗?问题仍然存在。你可以在以下位置转到“松弛”位置:
<firebase-query
id="query"
...
path="widgets"
data="{{items}}">
</firebase-query>
user: {
type: Object,
notify: true,
observer: '_userChanged',
},
_userChanged: function() {
this.$.query.path = 'widgets';
var items = this.$.query.ref.child('widgets');
this.set('items', items);
},
<firebase-query
id="query"
...
path="[[path]]"
data="{{items}}">
</firebase-query>
<script>
...
properties: {
path: {
type: String,
value: function() {
return 'widgets';
},
}
},
...
</script>
loggon: function parseLogin(user, password) {
...
Parse.User.logIn(_user, _pass).then(function() {
page('/channels');
---
channels.render ...
_render: function() {
console.log('_render');
this.$.get_channlinq.headers = hdr;
//xhr params
var body = this._setQry(this.params.channelId);
this.$.get_channlinq.body = JSON.stringify(body);
//fetch , load , template will render
this.$.get_channlinq.generateRequest();