因此,我不想使用Google的JavaScript文档中的示例粘贴标准副本&,而是使用全局变量,我想使用原型封装所有内容。在Javascript原型中使用Google Drive API
我的功能始于此:
define(function (require){
'use strict';
...
,但在这我现在挡住了有趣的一点是:
GoogleDrive.prototype.loadAPI = function() {
window.gapi.load('picker', {'callback': this.onPickerApiLoad});
};
GoogleDrive.prototype.onPickerApiLoad = function() {
this.pickerApiLoaded = true;
this.createPicker();
};
这并不因为this
工作回调里面是不是我的GoogleDrive
所以我得到:
Uncaught TypeError: Cannot set property 'pickerApiLoaded' of undefined
H我会将那个.onPickerApiLoad
连接到正确的范围吗?
UPDATE:
通过@乔恩的回答,我看着下划线的bind
法源代码,它使用call
,所以我试图做同样的,与返回一个版本我的原型功能的功能提示绑定到我想要的上下文:
GoogleDrive.prototype.loadAPI = function() {
var that = this;
googleAPI.load('picker', {'callback': function() { return that.onPickerApiLoad.call(that) }});
};
这似乎工作(不得不确认),但没有那么优雅。
我注意到谷歌返回一个承诺,如果你不通过回调,是否有可能使用,而不是另一个库? – aledalgrande 2014-11-05 00:18:45
其实我错了,只有'gapi.client.load'返回一个承诺,而且这个API是(令人困惑的)完全分离的。 – aledalgrande 2014-11-05 01:01:20
啊好的。是的,如果你有承诺,你可以用诺言...... – 2014-11-05 01:38:29