Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google plus 谷歌+;如果在模块内,则找不到Signin回调函数_Google Plus - Fatal编程技术网

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而不是标记进行渲染。