web-dev-qa-db-ja.com

View AngularJSへのサービスの使用

AngularJSサービスに問題があります。

私は簡単なサービスを持っています:

angular.module('mainApp.services', []).factory('AuthService',
function ($http) {
    //var currentUser = null;
    //var authorized = false;

    //AutoLogin for testing
    var currentUser={email: "[email protected]", id: "15"};
    var authorized=true;

    // initial state says we haven't logged in or out yet...
    // this tells us we are in public browsing
    var initialState = false;

    return {
        initialState:function () {
            return initialState;
        },
        login:function (userData) {
            //Call API Login
            currentUser = userData;
            authorized = true;
            initialState = false;
        },
        logout:function () {
            currentUser = null;
            authorized = false;
        },
        isLoggedIn:function () {
            return authorized;
        },
        currentUser:function () {
            return currentUser;
        },
        authorized:function () {
            return authorized;
        }
    };
});

それから私は簡単なコントローラーを持っています

.controller('NavbarTopCtrl', ['$scope','$modal','AuthService',function($scope,$modal,authService) {
    $scope.authService=authService;  //IS good practice?
    console.log($scope);
}])

Viewでサービスを使用できません。私は簡単なトリックを作り、うまくいきました。

$scope.authService=authService

しかし、これを使用せずにビュー(HTMLファイル)でサービスを呼び出す方法は?

22
Norbert Pisz

ビュー内でサービスを使用することは、一般的に悪い習慣です。ビューにはプレゼンテーションロジックのみを含める必要があります。この例では、サービス全体をビューに渡す代わりに、ユーザーオブジェクトのみを渡そうとすることができます。たとえば、$scope.currentUser = authService.currentUser()です。

20
luacassus