2016-03-19 2 views
0

Я начала работы с угловой JS и есть что-то я не очень понимаю, в службе я использую:что является целью возвращения данных в службе Угловая JS

(function() { 

    angular 
    .module('meanApp') // service qui dépend de ce module ? 
    .factory('authentication', authentication); 

    // $inject : To allow the minifiers to rename the function parameters and still be able to inject the right services, the function needs to be annotated with the $inject property. The $inject property is an array of service names to inject. 
    // https://docs.angularjs.org/guide/di 

    authentication.$inject = ['$http', '$window']; 

    function authentication ($http, $window) { 

    console.log("enters authentication service"); 
    var saveToken = function (token) { 
     $window.localStorage['mean-token'] = token; 
    }; 

    var getToken = function() { 
     return $window.localStorage['mean-token']; 
    }; 

    var isLoggedIn = function() { 
     var token = getToken(); 
     var payload; 

     if(token){ 
     payload = token.split('.')[1]; 
     payload = $window.atob(payload); //will decode a Base64 string 
     payload = JSON.parse(payload); 

     return payload.exp > Date.now()/1000; 
     } else { 
     return false; 
     } 
    }; 

    var currentUser = function() { 
     if(isLoggedIn()){ 
     var token = getToken(); 
     var payload = token.split('.')[1]; 
     payload = $window.atob(payload); 
     payload = JSON.parse(payload); 
     return { 
      email : payload.email, 
      name : payload.name 
     }; 
     } 
    }; 

    //An interface between the Angular app and the API, to call the login and register end-points and save the returned token. This will use the Angular $http service 


    var register = function(user) { 
     console.log("ARNAUD: Arriving in register promise"); 
     return $http.post('/api/register', user).success(function(data){ 
     saveToken(data.token); 
     }); 
    }; 

    var login = function(user) { 
     return $http.post('/api/login', user).success(function(data) { 
     saveToken(data.token); 
     }); 
    }; 

    var logout = function() { 
     $window.localStorage.removeItem('mean-token'); 
    }; 


    // must return an object or function or at least a value from the factory 
    return { 
     currentUser : currentUser, 
     saveToken : saveToken, 
     getToken : getToken, 
     isLoggedIn : isLoggedIn, 
     register : register, 
     login : login, 
     logout : logout 
    }; 

    } 


})(); 

Функции, объявленные выше уже вернуть то, что мне нужно, и я просто нужно вызвать их в мой контроллер:

authentication.register(vm.credentials) 

какова точная цель

return { 
    currentUser : currentUser, 
    saveToken : saveToken, 
    getToken : getToken, 
    isLoggedIn : isLoggedIn, 
    register : register, 
    login : login, 
    logout : logout 
}; 

Может быть, это глупый вопрос, угловыми старших разработчиков JS, но это не ясно для меня

Спасибо за помощь мне поставить некоторый свет на этот

+1

первый я настоятельно рекомендую вам readup на [этот вопрос ответ] (http://stackoverflow.com/ a/28262966/2435473) –

ответ

1

заводском это функция, которая вызывается угловой, и это должен возвращать экземпляр услуги, которую вы хотите сделать доступной для приложения.

Если вы ничего не вернули с завода, это будет эффективно возвращаться не определенно, и каждый раз, когда вы вводите службу в свои контроллеры, директивы и т. Д., Вы получите неопределенное, вместо того, чтобы получать объект с помощью методов ,

+0

Благодарим вас за разъяснение – Slrg

1

module.factory() вернет объект ->, чтобы вы могли называть что-либо на этом объекте, вы должны его вернуть.

Другим способом было бы использовать module.service - это вернет экземпляр.

module.service('test', function() { 
    this.nice = function() {}; 
}); 

module.factory('test', function() { 
    function something() {} 
    return { 
    nice: something 
    }; 
}); 

заводы намного более мощный, чем услуги - представьте себе следующее:

module.fatory('prefix', function() { 
    return function (prefix) { 
    return { 
     log: function (message) { 
     console.log(prefix+': '+message; 
     } 
    }; 
    }; 
}); 
+0

Благодарим вас за помощь – Slrg

Смежные вопросы