Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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
Javascript 从Sencha Touch类调用常规JS函数_Javascript_Facebook_Facebook Graph Api_Extjs_Sencha Touch - Fatal编程技术网

Javascript 从Sencha Touch类调用常规JS函数

Javascript 从Sencha Touch类调用常规JS函数,javascript,facebook,facebook-graph-api,extjs,sencha-touch,Javascript,Facebook,Facebook Graph Api,Extjs,Sencha Touch,有人能解释一下我怎么做吗?我正在尝试获取FB访问令牌并将其附加到存储配置中的URL字符串。因此 Ext.define('clubs.store.FacebookEvent', { extend: 'Ext.data.Store', requires: [ 'clubs.model.FacebookEvent' ], config: { autoLoad: true, model: 'clubs.model.FacebookEvent', //storeId: '

有人能解释一下我怎么做吗?我正在尝试获取FB访问令牌并将其附加到存储配置中的URL字符串。因此

Ext.define('clubs.store.FacebookEvent', {
extend: 'Ext.data.Store',
requires: [
    'clubs.model.FacebookEvent'
],

config: {
    autoLoad: true,
    model: 'clubs.model.FacebookEvent',
    //storeId: 'FacebookEventStore',
    proxy: {
        type: 'jsonp',
        url: 'https://graph.facebook.com/474381199275383/?fields=description,name&access_token=' + getAccessCode(),

        reader: {
            type: 'json'
            //rootProperty: 'data'
        }
    }
}

});

function getAccessCode(){
FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
        var uid = response.authResponse.userID;
        var accessToken = response.authResponse.accessToken;
        console.log(accessToken);
    }
});
return accessToken;
}

然而,我似乎总是在我的JS控制台得到这个错误

uncaught Error: The following classes are not declared even if their files have been loaded: 'club.store.FacebookEvent'. Please check the source code of their corresponding files for possible typos:

我走错方向了吗?任何帮助都将不胜感激

您只需更改

Ext.define('clubs.store.FacebookEvent',


事实上,您的应用程序名称是club,而不是clubs

理想情况下,您应该将其放入controller或任何singleton实用程序类中,然后像这样访问它:

this.getApplication().getController('ControllerName').getAccessCode()
config : {
    //..blah blah
},
getAccessCode : function(){
  FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
    var uid = response.authResponse.userID;
    var accessToken = response.authResponse.accessToken;
    console.log(accessToken);
    }
  });
  return accessToken;
}

但如果您想将其保留在此处,则必须定义如下函数:

this.getApplication().getController('ControllerName').getAccessCode()
config : {
    //..blah blah
},
getAccessCode : function(){
  FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
    var uid = response.authResponse.userID;
    var accessToken = response.authResponse.accessToken;
    console.log(accessToken);
    }
  });
  return accessToken;
}

抱歉,这只是我的复制和粘贴中的一个错误,名称没有问题。当我删除该函数时,它将正确加载网页而不会出现该错误,但是当添加的函数存在时,就会出现问题。如果问题是在其中包含那个普通的JS函数,那么为什么不使用该方法创建一个新的singleton类呢?Ext.Loader只要求每个文件有一个类(或命名空间)。