javascript - AngularJS工厂不保留值(value)

标签 javascript angularjs

我创建了一个简单的工厂来存储来 self 的 authService 的值:

app.factory("subfactory",
        function() {
            var subValue = {};
            return {
                set: set,
                get: get
            };

            function get() {
                return subValue;
            }

            function set(value) {
                subValue = value;
            }
        });

我在 authservice 中保存这样的值 - 这不是完整的服务,只是片段显示我使用 subfactory.set() 保存值的位置:

 mgr.getUser().then(function (user) {
        if (user) {
            var idToken = user.id_token;
            var dataIdToken = getDataFromToken(idToken);
            subfactory.set(dataIdToken.sub);
        } else {
            //console.log("User not logged in");
        }
    });

但是当我尝试在 Controller 中读取对象时,它是空的:

    vm.onGridLoad = function() {

        var storedValue = subfactory.get();

        console.log(storedValue);

最佳答案

我会用不同的方式编写工厂,但这只是我的想法。

app.factory("subfactory",
        function() {

           var service = {};
           service.subValue = {};

            service.save = save;

            return service;

            function save(value) {
                service.subValue = value;
            }
        });

然后你将工厂注入(inject)到你需要的任何 Controller 中。 当您返回服务对象时,不需要 get 方法,只需使用 service.subValue 即可取回值。如果您不喜欢它,请随意将其更改为您的偏好。

该代码未经测试,但应该足以解决您的问题。

您没有指定您拥有哪种类型的 Angular 应用程序,它是不是水疗中心?初始保存后重新加载页面吗?如果您确实重新加载页面(例如导航到另一个页面),您的 JavaScript 将重新加载,并且您将丢失工厂中保存的状态。在这种情况下,您可以将您想要保留的任何内容存储在 localStorage 之类的地方。

关于javascript - AngularJS工厂不保留值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46587014/

相关文章:

javascript - 链接两个函数的最佳实践,AngularJs/JavaScript

javascript - 在 Javascript 中引用网站

javascript - Rails 使用 AJAX 删除评论

javascript - 错误: [ngRepeat:iexp] Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '(name,surname)in controller.students'

javascript - AngularJS ng-show 如果对象数组中的属性设置为 false

javascript - 获取通用数组时对表进行 ng-repeat

angularjs - 如何检查我使用的是哪个版本的 Angular?

javascript - php 文件中的弹出警报脚本

javascript - Google Apps 脚本挂起 (javascript)

angularjs - 使输入文本在出现 Angular 时被选择