Я пытаюсь сделать модуль регистрации facebook в своем приложении. Facebook API быстрее, чем мой угловой контроллер, поэтому обещание должно быть использовано здесь. Проблема в том, что $ q представляется пустым объектом, а функция отсрочки не определена.Выполнение обещаний в модулях
модуль:
вар модуль = 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();
}
});
}
Без использования обещание, он получает быстро от API, но все переменные, которые я хочу, чтобы заполнить значениями из API, начинается до API отделки и не определены.
Так что же дает 'console.log ($ q)' give? – Bergi
возвращает "undefined". Сообщение об ошибке было «не может получить отсрочку свойства undefined или так» –
Помогите нам соединить точки лучше. Прямо сейчас вы показываете фабрике 'FacebookAPI', возвращающую объект, к которому прилагается множество функций. Объявлены ли эти функции внутри фабрики? (например: вставьте весь завод, затем удалите ненужные функции). Прямо сейчас вы можете сказать, что $ q не определено b/c, функция не объявлена внутри фабрики. Кроме того, несвязанный (но будет проблемой), убедитесь, что элементы в 'Facebook. $ Inject' указаны в том же порядке в заводской функции. –