angularjs singleton不起作用

时间:2014-12-17 10:04:46

标签: angularjs

在app.js中我有一个我在两个文件/控制器中使用的变量:

var app = angular.module('appDemo', ['MainControllers', 'MainServices'])
    .constant('myConfig', {
        'backend': 'http://localhost:1236'
    })
.service('mailService', function() {
    var mail = {
      value: 'hello world'
    };
    var getMail = function() {
      return mail;
    }
    var setMail = function(email) {
      mail.value = email;
    }
    return {
      getMail: getMail,
      setMail: setMail
    };
);

从controllerOne设置变量很好:

angular.module('MainControllers')
.controller('MemberController', function ($scope, mainService, appDemo) {

    window.onbeforeunload = function (e) {
        appDemo.setMail('test@test.com');
    };

但是当我从controllerTwo获取设置变量时,我获得了默认值:

angular.module('MainControllers')
    .controller('EmailController', function($scope, appDemo) {

        $scope.mailAddress = appDemo.getMail();
    });

每个控制器都在单独的文件

出了什么问题?

1 个答案:

答案 0 :(得分:1)

这可能是因为正在重新加载服务本身,因为我可以看到您正在onbeforeunload的第一个控制器中设置邮件。

服务无法在窗口重新加载或页面刷新时保留。每次重新加载页面时都会重新加载它们。

如果要保留值,请尝试将其放在localStorage或sessionStorage中。