如何更新主控制器$ scope自Angularjs中的歌曲控制器

时间:2014-05-14 15:38:48

标签: javascript angularjs parse-platform

我正在使用angular和Parse.com,我遇到了一个问题:

我有一个“mainController”,它在所有的html文档中,以及一个带有一些页面和控制器的routeProvider。

   function mainController($scope) 
       {

            $scope.logeado = (Parse.User.current()!=null)

              if (Parse.User.current()==null)
                {
                     $scope.showuser=""
                }
              else
                {
                    $scope.showuser=Parse.User.current().get('username')
                }

              $scope.logout = function()
                {
                     Parse.User.logOut();
                     $scope.logeado = (Parse.User.current()!=null);
                     $scope.$apply();
                 }

      };

这个控制器之一是“loginController”。在这个控制器中进行登录,但我的问题是: 如果我注销,该函数在maincontroller中,这个ng-show =“logeado”会因为变量在里面而改变,但是如果我登录logincontroller,我可以改变“Parse.User.current()”但是$ scope.logeado没有更新,我需要更新所有页面以查看更改。

如何更新de变量?

2 个答案:

答案 0 :(得分:1)

解决问题的方法之一是实现模式观察器。让 Parse.User.current通知他的州。

function mainController($scope){  

  Parse.User.current.onChange(function () {
    $scope.logeado = (Parse.User.current()!=null);

    if (Parse.User.current() == null)      {
      $scope.showuser=""
    } else  {
      $scope.showuser=Parse.User.current().get('username')
    }
  });

  $scope.logout = function() {
    Parse.User.logOut();
  };
};

答案 1 :(得分:0)

最后,我在mainController($scope)

中创建了一个函数
     $scope.login2= function(){

         $scope.logeado = (Parse.User.current()!=null);


         if (Parse.User.current() == null)      
            {
                 $scope.showuser=""
            } 
         else  
            {
                 $scope.showuser=Parse.User.current().get('username')
            }
     };

并从loginController($scope)开始调用它,因为$ scope.login2在此继承。