AngularJS控制器第一次不加载



在视图中,我声明:

<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] 进行中错误

最新更新