从index.html调用函数,该函数无限循环
calling function from index.html and the function loops indefintely
我正在尝试制作一个函数,该函数只向具有正确角色的用户显示html的特定部分。这些是我的功能:
nodejs/server.js
app.get('/api/isadmin', ensureAuthenticated, function (req, res) {
User.findById(req.user, function (err, user) {
res.send(user);
});
});
这就是问题发生的地方,它将无休止地运行:
<ul ng-if="isAdmin()">
<li>
<a ui-sref="admin">Admin</a>
</li>
</ul>
为什么会发生这种情况?我看过Satellizer的isAuthenticated函数,基本上也做了同样的事情。
编辑:更新代码:
adminservice.js
angular.module('App')
.factory('AdminService', function ($q, $http, toastr) {
return {
getAdmin: function () {
var httpget = $http.get('http://localhost:3000/api/isadmin');
httpget.then(function (response) {
var res = response.data.role;
if (res == 'admin') {
console.log('true');
return true;
}
else {
console.log('false');
return false;
}
}, function (result) {
return $q.reject(result);
});
return httpget;
}
};
});
navbar.js
angular.module('App')
.controller('NavbarCtrl', function($q, $scope, $auth, AdminService) {
$scope.isAuthenticated = function() {
return $auth.isAuthenticated();
};
AdminService.getAdmin().then(
function (result) {
$scope.isAdmin = result;
});
});
无论是true还是false,这两个响应仍然可以看到Admin列表元素。
我正要写很多东西。既然你已经找到并更新了你的代码,让我来解决现有的问题。您需要getAdmin
函数中的promise实例return
,而不是httpget
。
angular.module('App')
.factory('AdminService', function ($q, $http, toastr) {
return {
getAdmin: function () {
var httpget = $http.get('http://localhost:3000/api/isadmin');
return httpget.then(function (response) {
var res = response.data.role;
if (res == 'admin') {
console.log('true');
return true;
}
else {
console.log('false');
return false;
}
}, function (result) {
// just return false
return false;
});
}
};
});
你的控制器看起来不错。在html部分中,将ng-if与isAdmin
属性绑定。
<ul ng-if="isAdmin">
<li>
<a ui-sref="admin">Admin</a>
</li>
</ul>
希望,这有帮助。
更新
只有返回httpget
才会返回promise实例,但您将在resolve函数中获得实际响应。您调用http://localhost:3000/api/isadmin
时得到的响应。看到这个砰的一声:http://plnkr.co/edit/9UtYJlm9BalTi8HHTrV2?p=preview
相关文章:
- 从index.html调用函数,该函数无限循环
- 使用jQuery在具有相同名称函数的对象上触发事件时的无限循环
- AngularJS内部的调用函数进入无限循环
- 使用 for 循环中的函数测试字符串时,我一直陷入无限循环
- 函数无限循环并忽略其他函数的某些部分
- Angularjs 指令,函数双向绑定陷入无限循环
- 为什么这个函数不能无限循环
- Javascript 函数有时会将自身循环成无限循环
- scrollTop() 函数无限循环
- ng-禁用函数调用在 ng-repeat 下处于无限循环中
- 如何从无限循环的Javascript函数将值传递给MySQL
- CodeMirror在实现变更函数时进入无限循环
- 如何在不创建无限循环的情况下从事件处理程序中激发事件触发函数
- 为什么angularjs摘要使用日期获取函数进入无限循环
- 处理异步加载的函数中的无限循环
- 通过$scope访问函数中的ng-resource会导致无限循环
- JavaScript Bookmarklet:无限循环执行一个函数,然后在页面加载时再次执行该函数
- 无限循环与递归javascript函数
- Javascript中产生无限循环的递归函数
- 让jQuery动画函数无限循环