Google plus 谷歌+;如果在模块内,则找不到Signin回调函数
当我将回调函数放在模块中时,我遇到了一些奇怪的问题,库似乎找不到该函数,因此如果我使用:Google plus 谷歌+;如果在模块内,则找不到Signin回调函数,google-plus,Google Plus,当我将回调函数放在模块中时,我遇到了一些奇怪的问题,库似乎找不到该函数,因此如果我使用: var Auth = (function () { var gPlusSignCallback = function () { console.log("Google plus signin call back done!"); }; return { gPlusSignCallback: gPlusSignCallback }; }()); 在我使用的Goo
var Auth = (function () {
var gPlusSignCallback = function () {
console.log("Google plus signin call back done!");
};
return {
gPlusSignCallback: gPlusSignCallback
};
}());
在我使用的Google+签名按钮的html片段中:
data-callback="Auth.gPlusSignCallback"
我得到以下错误:
找不到名为“Auth.gPlusSignCallback”的回调函数
如果我将gPlusSignCallback放在模块外部,那么一切都很好。我检查了文档,它说该值必须是全局命名空间中的函数。那么,它不是设计出来的吗?我需要创建一个全局变量来引用模块中的函数?signin回调必须是一个全局函数,小部件才能找到它。将您的回调包装为:
function onSigninCallback(e){
Auth.gPlusSignCallback(e);
}
另一种方法是使用渲染按钮。如果这样做,可以将对函数的引用作为回调传递。
PhotoHunt中的一个示例,即端到端的Google+平台示例应用程序。是的,我就是这样做的。我很好奇,有什么具体原因吗?原因是登录按钮使用字符串来指定函数。因此,没有干净(例如不使用eval)的方法通过字符串获取非全局/私有闭包函数引用。正如Silvano提到的,如果不想使用全局回调,可以直接使用JavaScript而不是标记进行渲染。