我有一个多次调用的角度服务功能.在index.html页面中我有以下行:
<li><i class="pull-right"></i><br/>{{appCtrl.service.getCurrentUser()}} </li>
Run Code Online (Sandbox Code Playgroud)
在应用程序控制器中,我设置了变量
appCtrl.controller('AppController', function ($state, securityService, $log) {
$log.info('App controller');
var appCtrl = this;
appCtrl.service = securityService;
});
Run Code Online (Sandbox Code Playgroud)
在我的服务中,我公开了这个功能
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;
}
}
});
Run Code Online (Sandbox Code Playgroud)
getCurrentUser当应用程序启动或页面刷新完成时,函数中的以下行会被多次调用.
$log.info('Calling current user');
Run Code Online (Sandbox Code Playgroud)
控制器只被调用一次,我通过查看来监控它 $log.info('App controller');
是作为脏检查过程的一部分被调用还是我做错了什么?
Angular在每个摘要周期调用你的函数,你可以在函数内部设置断点并检查它.如果您使用的是1.3版本,那么请查看一次性绑定功能.如果没有,则调用控制器内的服务并将视图绑定到某个范围变量:
$scope.currentUser = securityService.getCurrentUser();
Run Code Online (Sandbox Code Playgroud)
并且内部视图绑定到范围变量:
{{currentUser}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2430 次 |
| 最近记录: |