Angularjs的本地主控制器不能用rootscope进行更新



我试图在我的ng-view之前显示错误(来自任何控制器)。但是当$rootScope很好地更新时,我的错误变量不是。

index . html

<div id="header" ng-controller="HeaderCtrl as head" class="header">
   <div ng-include="'views/header.html'"></div>
</div>
<div class="container" ng-controller="MainCtrl as main">
   <div ng-show="main.error" class="alert alert-danger">{{main.error}}</div>
   <div ng-view=""></div>
</div>  

main.js

function MainCtrl($scope,$rootScope) {  
  var main=this;  
  main.error=$rootScope.error;  
}  

header.js

function HeaderCtrl($rootScope) {
  $rootScope.error = "NO ERROR";
  function login(){  
    $rootScope.error = "ERROR";
  }
}  

当它不在登录函数中是可以的(我看到很好"没有错误",但当我调用login()时,我可以看到$rootScope。错误很好地更新了,但不是主要的。错误? ?

我建议你不要做你正在做的事情,因为将$rootScope变量绑定到$scope变量确实是多余的。只要这样做,你会有更少的绑定:

<div class="container" ng-controller="MainCtrl as main">
   <div ng-show="error" class="alert alert-danger">{{error}}</div>
   <div ng-view=""></div>
</div>  
function MainCtrl($scope) {  
  var main=this;
}  

最新更新