我收到以下错误:
TypeError: this.isUserLoggedIn is not a function
at userHasPermissionForView (accountService.js:159)
at Object.checkPermissionForView (accountService.js:155)
at edCareApp.js:232
当我在以下服务中调用this.isUserLoggedIn函数时。
见下文:
**第159行:** if(!this.isUserLoggedIn()){
文件accountService.js中的:
angular.module("edCare")
.service('accountService', function ($http, createAccountUrl, createAccountUserUrl, tokenUrl, tokenKey, $cookieStore, $rootScope) {
this.isUserAuthenticated = function () {
var token = sessionStorage.getItem(tokenKey);
if (token)
return true;
else
return false;
}
this.isUserLoggedIn = function () {
if ($rootScope.repository.loggedUser != null)
return true;
else
return false;
}
this.checkPermissionForView = function (view) {
return userHasPermissionForView(view);
};
var userHasPermissionForView = function (view) {
** Line 159: ** if (!this.isUserLoggedIn()) {
return false;
}
if (!view.permissions || !view.permissions.length) {
return true;
}
return userHasPermission(view.permissions);
};
this.userHasPermission = function (requiredPermissions) {
if (!this.isUserLoggedIn()) {
return false;
}
var found = false;
angular.forEach(requiredPermissions, function (requiredPermission, index) {
if ($rootScope.permissions.loggedUser.permissions.indexOf(requiredPermission)
>= 0) {
found = true;
return;
}
});
return found;
};
});
这看起来很简单,但我无法看清我做错了什么。
请有人帮忙。
感谢。
答案 0 :(得分:1)
userHasPermissionForView
函数需要绑定到this
上下文:
this.checkPermissionForView = function (view) {
̶r̶e̶t̶u̶r̶n̶ ̶u̶s̶e̶r̶H̶a̶s̶P̶e̶r̶m̶i̶s̶s̶i̶o̶n̶F̶o̶r̶V̶i̶e̶w̶(̶v̶i̶e̶w̶)̶;̶
return userHasPermissionForView.bind(this)(view);
};
var userHasPermissionForView = function (view) {
if (!this.isUserLoggedIn()) {
return false;
}
if (!view.permissions || !view.permissions.length) {
return true;
}
return userHasPermission(view.permissions);
};