如何在计算绑定中返回 header 后调用铁 ajax 异步
How to invoke iron ajax async after returning header in computed binding
Polymer 1.* 和 Firebase
如何在 return '{"Authorization": "Bearer ' + token + '"}';
之后调用 this.$$('#ironAjax').generateRequest();
进行异步操作?我必须 return header 值,然后调用 iron-ajax 请求。
<iron-ajax
url="[[HOST]][[LISTINGS]]?foo=foo"
id="ironAjax"
handle-as="json"
headers="[[setAuth()]]",
on-error="errorHandler"
loading="{{ironLoading}}"
last-response="{{listings}}"></iron-ajax>
pageActivated: function(activated) {
if (activated) {
this.setAuth();
}
},
setAuth: ()=> {
firebase.auth()
.onAuthStateChanged((token) => {
return '{"Authorization": "Bearer ' + token + '"}';
this.$$('#ironAjax').generateRequest(); // NEED TO CALL AFTER
// HEADER IS SET
})
我能够通过直接修改 header 来处理这种情况。希望这可以帮助处于相同情况的其他人:
行为:
<script>
AuthIronAjax = {
rawSetAuth: (user, ajax) => {
if (user) {
user.getIdToken().then((token) => {
ajax.headers['Authorization'] = 'Bearer ' + token;
ajax.generateRequest();
});
}
},
setAuth: function (ajax) {
firebase.auth()
.onAuthStateChanged((user)=> this.rawSetAuth(user, ajax));
}
};
</script>
它在其中使用的元素。注意:iron-pages 与隐含主机 属性 绑定一起使用 activated
:
observers: ['pageActivated(activated)'],
behaviors: [AuthIronAjax],
pageActivated: function(activated) {
if (activated) {
this.setAuth(this.$.ironAjax);
}
},
Polymer 1.* 和 Firebase
如何在 return '{"Authorization": "Bearer ' + token + '"}';
之后调用 this.$$('#ironAjax').generateRequest();
进行异步操作?我必须 return header 值,然后调用 iron-ajax 请求。
<iron-ajax
url="[[HOST]][[LISTINGS]]?foo=foo"
id="ironAjax"
handle-as="json"
headers="[[setAuth()]]",
on-error="errorHandler"
loading="{{ironLoading}}"
last-response="{{listings}}"></iron-ajax>
pageActivated: function(activated) {
if (activated) {
this.setAuth();
}
},
setAuth: ()=> {
firebase.auth()
.onAuthStateChanged((token) => {
return '{"Authorization": "Bearer ' + token + '"}';
this.$$('#ironAjax').generateRequest(); // NEED TO CALL AFTER
// HEADER IS SET
})
我能够通过直接修改 header 来处理这种情况。希望这可以帮助处于相同情况的其他人:
行为:
<script>
AuthIronAjax = {
rawSetAuth: (user, ajax) => {
if (user) {
user.getIdToken().then((token) => {
ajax.headers['Authorization'] = 'Bearer ' + token;
ajax.generateRequest();
});
}
},
setAuth: function (ajax) {
firebase.auth()
.onAuthStateChanged((user)=> this.rawSetAuth(user, ajax));
}
};
</script>
它在其中使用的元素。注意:iron-pages 与隐含主机 属性 绑定一起使用 activated
:
observers: ['pageActivated(activated)'],
behaviors: [AuthIronAjax],
pageActivated: function(activated) {
if (activated) {
this.setAuth(this.$.ironAjax);
}
},