在视图中,我声明:
<div ng-controller="LoginController">
<div ng-if="authenticated=='no'">
<a href="/signin">Sign In</a>
</div>
<div ng-if="authenticated=='yes'">
<a href="/logout">Logout</a>
</div>
</div>
请注意,在上面的代码行之前正确调用包含控制器的角度文件。
在我的控制器中,我正在尝试从节点 API 加载数据,并使用 $http
get 请求并将其结果设置为如下所示的范围:
var indexModule = angular.module ('indexModule', []);
indexModule.controller('LoginController',['$scope', '$http',
function($scope, $http){
$http.get('/api/data')
.success(function(data){
$scope.authenticated = data.authenticated;
})
.error(function(){
alert('Error occured');
});
这仅在多次页面刷新后有效。我做错了什么吗?
更新
以下是节点.js路由:
app.get('/api/data', function (req,res) { // this is called by the controller to populate $scope
var sendtoFront = new Object();
toFront.authenticated = req.isAuthenticated() ? 'yes' : 'no';
if(req.isAuthenticated()) {
toFront.session = req.session.passport;
}
res.send(toFront);
});
app.get('/', function (req,res) { // this load the view
res.render('index');
});
更新二
我在Firefox而不是chrome中尝试了相同的代码,它似乎可以正常工作,有关如何修复此问题的任何想法。
编辑:在控制台中读取错误后,您似乎不希望$scope.$apply()。您似乎已从$rootscope手动调用了$apply()。如果在$rootScope上手动调用了$apply,请检查代码的其他部分。
类似的问题:Angularjs [$rootScope:inprog] 进行中错误