一直努力嘗試訪問我的路由器配置中的依賴關係,最後幾小時一直在努力,看着提供商,但似乎無法理解他們將如何幫助我。長話短說:我有一個名爲'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