2013-01-23 32 views
0

有人可以請解釋我如何做到這一點?我試圖獲得一個FB訪問令牌並將其附加到商店配置中的URL字符串。因此...從Sencha觸摸類調用常規JS功能

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: 

我要對這個錯誤的方式?任何幫助將非常感激!

回答

1

理想情況下,你應該把這個控制器或任何單實用類,然後訪問它像這樣:

this.getApplication().getController('ControllerName').getAccessCode() 

OR

UtilsClass.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; 
} 
0

你只需要類定義從

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

改變

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

其實你的應用程序名稱是俱樂部,而不是俱樂部

+0

對不起,這只是我的複製和粘貼錯誤,名稱很好。當我刪除該功能時,它會正確加載網頁而不會出現該錯誤,但是當添加的功能出現時,就會出現問題。 – user1089599

+0

如果這裏有一個香草JS函數,那麼爲什麼不用這個方法創建一個新的單例類? Ext.Loader只需要每個文件有一個類(或名稱空間)。 – arthurakay