javascript - 使用 Angular 服务在 Controller 之间共享数据

标签 javascript angularjs service controller share

我正在尝试让两个不同的 Controller 相互通信。

Controller 1

function WelcomeCtl($scope, emailService) {
    $scope.save=function(){
        emailService.saveEmail(‘Hi’);
        }
}

WelcomeCtl.$inject = [$scope, emailService];

此 Controller 旨在从文本字段中获取文本(使用 ng-model = 'email')并将文本放入服务(emailService)中,以便在下一个 ng-view(受控)中使用由下一个 Controller ) //出于测试目的,我只是将“Hi”直接放入 saveEmail 函数中

Controller 2

function SignupCtl($scope, emailService) {                                           
    window.alert(emailService.getEmail())
}

SignupCtl.$inject = [$scope, emailService];

出于测试目的,我使用 window.alert 来显示 getEmail() 的值

邮件服务

angular.module('myApp.services', [])
       .service('emailService', function (){
           var text =”start value”;
           return{
               saveEmail:function (data){
                  text  = data;

              },
              getEmail:function (){
                  return text;
              }
          };
      });

作为使用此服务指定的 Controller1 和 Controller 2 的结果,window.alert 打印出“起始值”而不是“Hi”

当我在代码中放置更多 window.alert 函数以查看发生了什么时,我看到调用 save() 时, Controller 1 执行并将值保存到服务中,express.js 加载下一页。然后 Controller2 激活。当 Controller 2 激活时,它会重新初始化服务,将文本设置回“起始值”。然后,当调用 getEmail 时,它返回值“起始值”

这让我感到困惑,因为我的印象是每次将服务包含在 Controller 中时都不会初始化服务。

引用资源。
Better design for passing data to other ng-view's and persisting it across controllers

我也在使用 angular-express-seed https://github.com/btford/angular-express-seed

最佳答案

Angular.js 只能工作并将数据保存在单个页面上。如果您的页面重新加载(正如您在说“express.js 加载下一页”时似乎表明的那样),那么它会重新初始化所有内容。

你应该:

关于javascript - 使用 Angular 服务在 Controller 之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15100020/

相关文章:

javascript - 使用 JavaScript 获取 2 个 DOM 元素之间的相对位置

javascript - 计算具有 'non numeric indexes only' 的数组的长度,无需 for in 循环

javascript - 对InfoWindow使用mouseover和mouseout会导致InfoWindow闪烁并连续触发mouseover和mouseout事件

javascript - AngularJS:出现 "[...] is not a function"错误

android - 使用 Android 连接到 SQL Server 的服务

c# - WCF 服务 Web 服务并发.Single

javascript - Firefox Quantum 上的动画问题

angularjs - 如何发布 JSON 对象 angularjs

android - 是否可以持有多个唤醒锁?

javascript - 嵌套数组的函数式编程