use*_*481 6 javascript service share controller angularjs
我试图让两个不同的控制器相互通信.
控制器1
function WelcomeCtl($scope, emailService) {
$scope.save=function(){
emailService.saveEmail(‘Hi’);
}
}
WelcomeCtl.$inject = [$scope, emailService];
Run Code Online (Sandbox Code Playgroud)
此控制器用于从文本字段中获取文本(使用ng-model ='email')并将文本放入服务(emailService),以便可以在下一个ng-view中使用(由下一个视图控制)控制器) //出于测试目的我只是将'Hi'直接放入saveEmail函数中
控制器2
function SignupCtl($scope, emailService) {
window.alert(emailService.getEmail())
}
SignupCtl.$inject = [$scope, emailService];
Run Code Online (Sandbox Code Playgroud)
为了测试目的,我使用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;
}
};
});
Run Code Online (Sandbox Code Playgroud)
由于使用此服务指定的Controller1和Controller 2,window.alert打印出"起始值"而不是"嗨"
当我在代码中添加更多window.alert函数以查看发生的情况时,我看到当调用save()时,Controller 1执行并将值保存到服务中,express.js加载下一页.然后Controller2激活.当Controller 2激活它时,重新初始化服务,将文本设置回"起始值".然后当调用getEmail时,它返回值"start value"
这让我感到困惑,因为我的印象是,每次将控件包含在服务器中时,服务都没有初始化.
咨询资源.
更好的设计,用于将数据传递到其他ng-view并将其持久化到控制器上
我也在使用angular-express-seed https://github.com/btford/angular-express-seed
Angular.js只能在单个页面上工作并保存数据.如果您的页面重新加载(正如您似乎在说"express.js加载下一页"时那样,那么它会重新初始化所有内容.
你应该:
localstorage.了解更多信息:http://diveintohtml5.info/storage.html| 归档时间: |
|
| 查看次数: |
9628 次 |
| 最近记录: |