我想有两个不同的控制器相互通信。
控制器1
function WelcomeCtl($scope, emailService) {
$scope.save=function(){
emailService.saveEmail(‘Hi’);
}
}
WelcomeCtl.$inject = [$scope, emailService];
该控制器被设计为采取从文本字段中的文本(以纳克模型=“电子邮件”),并把文本转换为服务(emailService),所以它可在下一NG-视图(其由下一个控制的被使用控制器)//用于测试目的,我只是把“嗨”直接进入saveEmail功能
控制器2
function SignupCtl($scope, emailService) {
window.alert(emailService.getEmail())
}
SignupCtl.$inject = [$scope, emailService];
为了测试旨意我使用window.alert显示getEmail的()的值
emailService
angular.module('myApp.services', [])
.service('emailService', function (){
var text =”start value”;
return{
saveEmail:function (data){
text = data;
},
getEmail:function (){
return text;
}
};
});
由于作为与此服务指定使用控制器1和控制器2的结果,window.alert打印出“开始值”而不是“您好”
当我把更多的window.alert功能的代码,看看发生了什么我看到,当保存()被调用时,控制器1个执行并保存的值到服务和express.js加载下一页。 然后,控制器2激活。 当控制器2激活它重新初始化服务,将文本回“启动值”。 然后,当getEmail叫其返回值“启动值”
这混淆了我,因为我是那个服务是每次都包含在控制器时间未初始化的印象。
咨询资源。
将数据传递到其他NG-视图的和跨控制器坚持它更好的设计
我也工作过的角度,明确种子的 https://github.com/btford/angular-express-seed