【问题标题】:Using angular service to share data between controllers使用角度服务在控制器之间共享数据
【发布时间】:2013-02-26 21:50:10
【问题描述】:

我试图让两个不同的控制器相互通信。

控制器 1

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

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

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

控制器 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() 时,控制器 1 执行并将值保存到服务中,并且 express.js 加载下一页。然后 Controller2 激活。当控制器 2 激活时,它会重新初始化服务,将文本设置回“起始值”。然后当 getEmail 被调用时,它返回值“起始值”

这让我感到困惑,因为我的印象是每次将服务包含在控制器中时都没有初始化服务。

咨询资源。
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

【问题讨论】:

    标签: javascript angularjs service controller share


    【解决方案1】:

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

    您应该:

    【讨论】:

    • 非常感谢。我以为我只是在两个 ng-views 之间切换,所以 angular 不必重新加载,但实际上我正在做你怀疑的事情并且正在切换页面。更改了它,所以我只是切换了视图,并且一切正常。谢谢!!!
    • 非常感谢!我一直在寻找 Angular 路由的替代方案!
    【解决方案2】:

    https://www.youtube.com/watch?v=HXpHV5gWgyk#t=29

    这家伙解释得很简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多