gpt4 book ai didi

angularjs - Angular 服务函数被多次调用

转载 作者:行者123 更新时间:2023-12-02 09:31:10 24 4
gpt4 key购买 nike

我有一个被多次调用的 angular.service 函数。在 index.html 页面中,我有以下行:

<li><i class="pull-right"></i><br/>{{appCtrl.service.getCurrentUser()}}&nbsp;</li>

在应用程序 Controller 中我设置了变量

appCtrl.controller('AppController', function ($state, securityService, $log) {

$log.info('App controller');

var appCtrl = this;
appCtrl.service = securityService;
});

在我的服务中,我公开了该功能

   login.factory('securityService', function ($window, $log) {

var currentUser;

return {
setCurrentUser: function (user) {
currentUser = user;
$window.sessionStorage.setItem('User', JSON.stringify(currentUser));
},
getCurrentUser: function () {
$log.info('Calling current user');
if (!currentUser) {
var storedObject = $window.sessionStorage.getItem('User');
currentUser = JSON.parse(storedObject);
}
return currentUser;
}
}
});

当应用程序启动或页面刷新完成时,getCurrentUser 函数中的以下行将被多次调用。

$log.info('Calling current user');

Controller 仅被调用一次,我通过查看 $log.info('App control'); 来监控它;

它是作为脏检查过程的一部分被调用还是我做错了什么?

最佳答案

Angular 在每个摘要周期调用您的函数,您可以在函数内设置断点并检查它。如果您使用的是1.3版本,那么请看一下One Time Binding特征。如果没有,则调用 Controller 内的服务并将 View 绑定(bind)到某个作用域变量:

$scope.currentUser = securityService.getCurrentUser();

内部 View 绑定(bind)到作用域变量:

{{currentUser}}

关于angularjs - Angular 服务函数被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32971188/

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