一直努力尝试访问我的路由器配置中的依赖关系,最后几小时一直在努力,看着提供商,但似乎无法理解他们将如何帮助我。长话短说:我有一个名为'ngOpenFB'的模块,我需要能够在我的路由器模块的配置中访问上述模块。Angular 1.x,在配置中注入依赖关系
我需要访问'ngOpenFB'模块以在state.resolve中使用它,检查用户是否在允许基本重新路由之前登录。
下面是我希望能够访问ngFB,当然我知道我不能,但是有什么可能的解决方案和最佳实践?
编辑:我知道我可以使用侦听器来检查$ stateChangeStart并劫持路由更改事件,原因很多,这将是我的最后手段。
angular.module('app.routes', ['ngOpenFB'])
.config(function($stateProvider, $urlRouterProvider, ngFB) {
var loginRequired = function ($q, $location) {
var deferred = $q.defer();
deferred.resolve();
// HERE I NEED TO ACCESS THE MODULE
if (ngFB.getLoginStatus().$$state.value.status !== 'connected') {
$location.path('/nologin');
}
return deferred.promise;
};
$stateProvider.state('start', {
url: '/start',
templateUrl: 'templates/start.html',
controller: 'startCtrl',
resolve: loginRequired
})
$urlRouterProvider.otherwise('/start');
});
编辑2:ngOpenFB模块
angular.module('ngOpenFB', [])
.factory('ngFB', function ($q, $window) {
function init(params) {
return $window.openFB.init(params);
}
function login(options) {
var deferred = $q.defer();
$window.openFB.login(function(result) {
if (result.status === "connected") {
deferred.resolve(result);
} else {
deferred.reject(result);
}
}, options);
return deferred.promise;
}
function logout() {
var deferred = $q.defer();
$window.openFB.logout(function() {
deferred.resolve();
});
return deferred.promise;
}
function api(obj) {
var deferred = $q.defer();
obj.success = function(result) {
deferred.resolve(result);
};
obj.error = function(error) {
deferred.reject(error);
};
$window.openFB.api(obj);
return deferred.promise;
}
function revokePermissions() {
var deferred = $q.defer();
$window.openFB.revokePermissions(
function() {
deferred.resolve();
},
function() {
deferred.reject();
}
);
return deferred.promise;
}
function getLoginStatus() {
var deferred = $q.defer();
$window.openFB.getLoginStatus(
function(result) {
deferred.resolve(result);
}
);
return deferred.promise;
}
return {
init: init,
login: login,
logout: logout,
revokePermissions: revokePermissions,
api: api,
getLoginStatus: getLoginStatus
};
});
是你的ngOpenFB提供者吗? – Aer0
不,这是一个模块 –
对不起,错误的问题。不知道您是否在控制台中遇到错误。我只是很好奇ngFB,如果它是一个提供者,因为你只能将提供者注入你的配置。 – Aer0