gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 05:13:02 27 4
gpt4 key购买 nike

我正在尝试让两个不同的 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com