アプリで Facebook 登録モジュールを作成しようとしています。Facebook API は私の Angular コントローラーよりも高速であるため、ここでは promise を使用する必要があります。問題は、$q が空のオブジェクトのように見え、遅延関数が定義されていないことです。
モジュール:
var module = angular.module('app.facebook', []); module.constant("fbAppId", 'herecomesmycode');
module.factory('facebook', FacebookAPI);
FacebookAPI.$inject = ['$ionicLoading', '$q', '$ionicPlatform', '$state', 'authService', 'datacontext', '$location'];
function FacebookAPI(UserService, $q, $ionicLoading, fbAppId, $state, authService, datacontext, $location) {
return {
fbLoginSuccess: fbLoginSuccess,
fbLoginError: fbLoginError,
getFacebookProfileInfo: getFacebookProfileInfo,
fbLogin: fbLogin,
fbRegister: fbRegister
};
ここで $q.defer は未定義です:
function fbRegister() {
console.log($q.defer);
if (!cordova) {
facebookConnectPlugin.browserInit(fbAppId);
}
var data;
facebookConnectPlugin.getLoginStatus(function (response) {
if (response.status !== 'connected') {
facebookConnectPlugin.login(["email"],
function(response) {
data = getApiData();
},
function(response) {
});
} else {
data = getApiData();
}
});
}
promise を使用しないと、API から高速になりますが、API からの値を入力したいすべての変数は、API が終了する前に開始され、未定義です。