防止AngularJS服务重新加载?

时间:2013-08-13 07:02:24

标签: angularjs

我的理解是AngularJS服务类似于单例,因此只实例化一次。因此,它们应该用于存储诸如“isUserLoggedIn”之类的东西。但是,使用我的应用程序,似乎该服务在每个页面加载时运行。这会导致问题,因为它会重置值。

我做错了什么?

我有一个像这样的index.html:

<body ng-app="MyApp">
<div class="container" ng-view=""></div>
</body>

我的服务如下:

MyApp.service('sharedProperties', function () {

    var isLoggedIn = false;

    return {
        getProperty: function () {
            return isLoggedIn;
        },
        setProperty: function(value) {
            isLoggedIn = value;

        }
    }
})

问题是每当我从一个路径/页面转到下一个路径时,这个服务一直被调用并将isLoggedIn设置为false。

我尝试'强制'缓存以提高index.html不会重新加载的可能性,从而导致服务启动但无济于事。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

试试这个

MyApp.service('sharedProperties', function () {


    service = {
        isLoggedIn : false,

        getProperty: function () {
            return service.isLoggedIn;
        },

        setProperty: function(value) {
            service.isLoggedIn = value;

        }
    };
    return service;

});

答案 1 :(得分:0)

使用CacheFactory代替,这可能有助于更多..

答案 2 :(得分:0)

如果您将服务设为值或常数,则应该消失。

myModule.value('sharedProperties', {
    isLoggedIn : false,

    getProperty: function () {
        return service.isLoggedIn;
    },

    setProperty: function(value) {
        service.isLoggedIn = value;

    }
});

角度文档是关于difference between constants, values, services, factories, providers的正确读物。