0

我的理解是 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 不会重新加载的机会,从而导致服务启动但无济于事。

有任何想法吗?

4

3 回答 3

0

试试这个

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


    service = {
        isLoggedIn : false,

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

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

        }
    };
    return service;

});
于 2013-08-13T07:11:34.200 回答
0

如果你让你的服务成为一个值或一个常数,这应该会消失。

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

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

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

    }
});

角度文档是关于常量、值、服务、工厂、提供者之间区别的不错的读物。

于 2014-04-25T06:07:56.897 回答
0

改用 CacheFactory ,这可以帮助更多..

于 2013-08-13T07:19:04.883 回答