Я пишу службу в AngularJS, и я хочу, чтобы эта служба выполняла перенаправление на странице, которую я выбираю. Я не имею $ рамки в этом так я использую:
$window.location.assign('path');
как documented on w3c.
Что я спрашиваю, если это безопасное использование или я должен использовать что-то другое.
пс: те, не работает:
$location.assign(); //assign is not a function
//
$location.path();
$scope.$apply(); //I don't have a $scope
Большое спасибо.
EDIT: добавил код (в socketio.listen('auth.loggedInSuccessfully', function(data) {
у меня проблемы я описал)
angular.module('frontendApp')
.factory('login', function ($window, socketio, $rootScope) {
// Service logic
// ...
var loginType = null;
// prepare socketio events
socketio.listen();
socketio.listen('auth.loggedInSuccessfully', function(data) {
console.log("Login verified by server!.. Redirecting...");
console.log("Login data received: " + JSON.stringify(data));
$rootScope.user = data.user;
$rootScope.$apply();
loginType = "facebook";
//console.log("$rootScope.user: " + JSON.stringify($rootScope.user.name));
//$location.path(destUrl); // THIS doesn't work.
$window.location.assign(data.destUrl); // this does!
});
socketio.listen('auth.loginFailed', function() {
console.log("Login failed!");
$rootScope.user = {}
});
socketio.listen('auth.logout', function() {
console.log("Logged out!");
$rootScope.user = {};
})
// Public API here
var api = {
fb: {
validateToken: function (access_token, destUrl) {
socketio.emit('fb.login', {
access_token: access_token,
destUrl: destUrl
});
console.log("Waiting server response...");
},[...]
};
return api;
});
Это работало безупречно. Большое спасибо, я не знал об этом. –