javascript - Variabilele serviciului Angularjs în toate șabloanele controller-ului


Sunt foarte nou în Angularjs.
Am creat un serviciu Angularjs pentru a stoca câțiva variabili „globali”. Arată astfel:

.factory('authVars', function() {
    var sdo = {
        baseBackendUrl: 'https://www.myurl.com',
        user: '',
        password: '',
        token: '',
        isLogged: false
    };
   return sdo;
})

Acum vreau să folosesc ng-show/hide în diferite controllere.

<div class="alert" ng-hide="authVars.isLogged">
    <strong>whatEver</strong>
</div>

Este chiar posibil acest lucru? Sau este mai bine să stochez asta în rootScope?
Pentru puțin ajutor aș fi foarte recunoscător ;-) mulțumesc

Răspuns #1

Doar înregistrează fabrica ta la fiecare controler. Acesta este un serviciu de scop pentru reutilizarea codului. Serviciul este ca un utilitar, îl scrii o dată și îl poți folosi în mai multe controlere

JS

myApp.factory('authVars', function() {
    var sdo = {
        baseBackendUrl: 'https://www.myurl.com',
        user: '',
        password: '',
        token: '',
        isLogged: false
    }; 

    return {
        getSdo: function() {
            return sdo;
        }
    };

})


function MyCtrl($scope, authVars) {

    $scope.authVars = authVars.getSdo();
}

Demo Fiddle

Răspunsul #2

Este 100% în regulă să îl pui în serviciu! Doar să nu uiți să-l injectezi în controllerele relevante:

var Ctrl = function($scope,authVars){
    $scope.authVars = authVars;
}

Exemplu: http://jsfiddle.net/cherniv/pzFrs/2/