我试图为谷歌文件选择器编写一个Polymer Element,但在创建选择器时,我一直收到相同的错误google is not defined
。。。
google
被找到过一次,但我重构了我的代码,因为它不能正常工作,也没有很好地编程。但现在我不知道为什么它不起作用,也不知道它是如何找到google
的!
<paper-button id="pick">Pick file</paper-button>
<script>
Polymer({
is: 'google-file-picker',
properties: {
apiKey: {
type: String,
observer: 'pickerInit'
},
apiLoaded: {
type: Boolean,
value: false
}
},
attached: function() {
var script = document.createElement('script');
script.async = true;
script.src = 'https://apis.google.com/js/api.js';
script.onload = this.onApiLoad();
document.head.appendChild(script);
},
pickerInit: function() {
var oAuth2 = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().access_token;
if(this.apiLoaded && (this.apiKey !== null || this.apiKey !== undefined)) {
var picker = new google.picker.PickerBuilder()
.addView(google.picker.ViewId.SPREADSHEETS)
.addView(new google.picker.DocsUploadView())
.setOAuthToken(oAuth2)
.setDeveloperKey(this.apiKey)
.setCallback(this.onSelect)
.build();
picker.setVisible(true);
}
},
onApiLoad: function() {
this.apiLoaded = true;
this.pickerInit();
},
onSelect: function(file) {
this.fire('file-selected', {file: file});
}
});
</script>
我不知道为什么它不起作用,我导入了Google Js API,然后我想引用google
对象!
您已经加载了主要的Google JS库(gapi
),但没有加载库的实际选择器部分。
在onApiLoad
方法中,在google.picker
可用之前,您需要这样的东西:
gapi.load(
'picker',
{'callback': this.pickerInit.bind(this)}
);