角度函数未在控制器中运行或绑定到$scope变量
Angular function not running in controller or binding to $scope variable
我相信这很简单,但我已经尝试了很多方法,但都没有结果。
我有一个工厂,它从一个简单的端点/api/me
检索配置文件数据。它应该返回姓名、电子邮件等…它对我的个人资料页面很好。然而,我的导航栏似乎是另一回事。
navBarCtrl
中的一些函数似乎起了作用,但它只是返回一个布尔值。我真正想参与的功能似乎是惰性的。这可能是因为它在等待某种事件。
当身份验证服务检查用户是否经过身份验证时,我尝试使用广播,但这似乎也没有做到。
首先,节点API端点。可能没有必要,但以防万一
app.get('/api/me', ensureAuthenticated, function(req, res) {
User.findById(req.user, function(err, user) {
res.send(user);
});
});
帐户工厂
angular
.module('issuefy')
.factory('Account', Account);
Account.$inject = ['$http', 'LocalStorage'];
function Account($http, LocalStorage) {
return {
getUser: function() {
return $http.get('/api/me');
},
updateProfile: function(profileData) {
return $http.put('/api/me', profileData);
}
};
现在是控制器。注意,我尝试用两种不同的方式来做
angular
.module('issuefy')
.controller('NavbarCtrl', NavbarCtrl);
NavbarCtrl.$inject = ['$scope', '$http', '$location', 'LocalStorage', 'QueryService', '$auth', 'toastr', 'Account'];
function NavbarCtrl($scope, $http, $location, LocalStorage, QueryService, $auth, toastr, Account) {
$scope.getNavUser = function() {
Account.getUser()
.then(function(response) {
$scope.userNav = response.data;
})
.catch(function(response) {
toastr.error(response.data.message, response.status);
});
};
$scope.$on('user-authenticated', function(event, args) {
Account.getUser()
.then(function(response) {
$scope.userNav1 = response.data;
})
.catch(function(response) {
toastr.error(response.data.message, response.status);
});
});
$scope.isAuthenticated = function() {
return $auth.isAuthenticated();
};
}
现在是模板页面
<div ng-controller="NavbarCtrl" class="navbar navbar-default navbar-static-top">
<div class="navbar-header">
<a class="navbar-brand" href="/"><i class="ion-ios7-pulse-strong"></i> Issuefy</a>
</div>
<ul class="nav navbar-nav">
<li><a href="/#/">Home</a></li>
<li ng-if="isAuthenticated()"><a href="/#/profile">Profile</a></li>
</ul>
<ul ng-if="!isAuthenticated()" class="nav navbar-nav pull-right">
<li><a href="/#/login">Login</a></li>
<li><a href="/#/signup">Sign up</a></li>
{{user.name}}
</ul>
<ul ng-if="isAuthenticated()" class="nav navbar-nav pull-right">
<li><a href="/#/logout">Logout</a></li>
<li><a href="/#/logout"><span ng-bind="userNav.email"></span></a></li>
<li><a href="/#/logout"><span ng-bind="userNav1.email"></span></a></li>
<li>{{userNav1.email}}</li>
<li>
<div class="btn-group" uib-dropdown is-open="status.isopen">
<button id="single-button" type="button" class="btn btn-primary" uib-dropdown-toggle ng-disabled="disabled">
<i class="fa fa-user">a {{userNav.email}} email</i></span>
</button>
<ul class="uib-dropdown-menu" role="menu" aria-labelledby="single-button">
<li role="menuitem"><a href="#">Action</a></li>
<li role="menuitem"><a href="#">Another action</a></li>
<li role="menuitem"><a href="#">Something else here</a></li>
<li class="divider"></li>
<li role="menuitem"><a href="#">Separated link</a></li>
</ul>
</div>
</li>
</ul>
</div>
<div ui-view></div>
我错过了什么?我相信这很简单。
我想知道什么返回$auth.isAuthenticated();
,是同步还是异步?如果它是异步的,那么表达式isAuthenticated()
可能返回错误的值。
相关文章:
- 用独立变量敲除foreach绑定
- 如果快速切换,ng类在绑定变量上不能很好地工作,这可能吗
- AngularJS$作用域包括我的绑定变量,但以后仍然无法访问,为什么
- AngularJS是交叉绑定变量
- Angular2:如何在输入元素上动态设置数据绑定变量
- 在 AngularJS 中使用绑定变量调用控制器方法
- AngularJS绑定变量超出范围并通知更新
- 如何在jquery ajax模板中添加两个不同的绑定变量(如${amount}和${tax})的值
- Oracle Node js - Javascript - SQL 语句中的 IN 子句绑定变量
- Javascript 如何绑定变量
- Angularjs中绑定变量的字符串
- 将字符串组合到Ember.js中的绑定变量中
- 如何在 ng-repeat (Angular JS) 的过滤器中使用数据绑定变量
- 当绑定变量改变时,Angularjs选择不更新
- Angularjs为HTML标签属性分配绑定变量
- 引导进度条样式的宽度在angular js绑定变量中不起作用
- 与Jquery对象绑定变量的问题
- 无法将变量/ng-model绑定变量作为参数传递给$scope工厂函数
- 以指令为内容的Angular JS绑定变量
- 调试:获取函数内部绑定变量的内容