начальный поставщик угловых значений

0

Мои app.js, service.js, controller.js объявлены ниже. Моя проблема заключается в том, что контроллер выбирает только начальные значения {userId: -1, networkName: 'xyz'}, установленные в service.js, даже если значения изменены на {userId: 129, networkName: 'mydomainaccoutname'} в myApp.run() в app.js. Я правильно ввел поставщика стоимости в myApp.run(), а также контроллер. Как получить контроллер для сбора обновленных значений? Благодарю.

app.js

(function () {
    'use strict';

    //debugger;
    var myApp = angular.module('myApp', [
        // Angular modules 
        'ngAnimate',        // animations
        //'ngRoute',          // routing
        'ngSanitize',       // sanitizes html bindings (ex: sidebar.js)
        'ui.router',        // state routing
        'ui.grid',
        'ui.grid.pagination',
        'ngResource',       // RESTful resource


        // Custom modules 
        'common',           // common functions, logger, spinner
        'common.bootstrap', // bootstrap dialog wrapper functions

        // 3rd Party Modules
        'ui.bootstrap'      // ui-bootstrap (ex: carousel, pagination, dialog)
    ]);

    myApp.run(['$templateCache', '$rootScope', '$state', '$stateParams', 'currentUserAccount', 'userFactory',
    function ($templateCache, $rootScope, $state, $stateParams, currentUserAccount, userFactory) {
        //currentUserAccount is a value provider service
        currentUserAccount = { userId: 129, networkName: 'mydomainaccoutname' };
    }]);
})();      

service.js

'use strict';

angular.module('myApp')

  .value('version', '5.0')

  .value('currentUserAccount', {
      userId: -1,
      networkName: 'xyz'
  });

controller.js

(function () { 
    'use strict';
    
    //debugger;
    var controllerId = 'shellCtrl';
    angular.module('cmtApp').controller(controllerId,
        ['$rootScope', 'common', 'config', 'currentUserAccount', shell]);

    function shell($rootScope, common, config, currentUserAccount) {
        var vm = this;
        var logSuccess = common.logger.getLogFn(controllerId, 'success');
        var events = config.events;
        vm.busyMessage = 'Please wait ...';
        vm.isBusy = true;
        vm.isAdmin = false;
        vm.currentUser = currentUserAccount;
        vm.spinnerOptions = {
            radius: 40,
            lines: 7,
            length: 0,
            width: 30,
            speed: 1.7,
            corners: 1.0,
            trail: 100,
            color: '#F58A00'
        };
      
        activate();

        function activate() {
            logSuccess('CMT loaded!', null, true);
            common.activateController([], controllerId);
        }
      };
})();
Теги:

1 ответ

0

Почему бы вам не использовать фактическую услугу? Вы можете воспользоваться своим сервисом следующим образом.

angular.module('app')
  .service('UserService', [function() {
     var currentUser = {
        userId: -1,
        networkName: 'xyz'
     };

     var getCurrentUser = function() {
        return currentUser;
     };

     var setCurrentUser = function(user) {
        currentUser = user;
     }; 

     // public functions
     return {
        getCurrentUser: getCurrentUser,
        setCurrentUser: setCurrentUser
     };

  }]);

Затем в вашем контроллере вы можете сделать что-то вроде этого:

(function () { 
    'use strict';

    //debugger;
    var controllerId = 'shellCtrl';
    angular.module('cmtApp').controller(controllerId,
        ['$rootScope', 'common', 'config', 'UserService', shell]);

    function shell($rootScope, common, config, UserService) {
        var vm = this;
        ....
        vm.currentUser = UserService.getCurrentUser();
       ...
      };
})();

Затем в своем приложении:

myApp.run(['$templateCache', '$rootScope', '$state', '$stateParams', 'UserService', 'userFactory',
function ($templateCache, $rootScope, $state, $stateParams, currentUserAccount, userFactory) {
    //currentUserAccount is a value provider service
    UserService.setCurrentUser({ userId: 129, networkName: 'mydomainaccoutname' });
}]);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню