2015-09-13 8 views
0

Я пытаюсь показать ошибки (поступающие с любого контроллера) непосредственно перед моим ng-view. Но когда $ rootScope хорошо обновляется, моя ошибка var не является.angularjs local main controller var no update с корнеплодом

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"; 
    } 
} 

Когда это не в функции входа это нормально (я не вижу хорошо «NO ERROR «но когда я вызываю login(), я вижу, что $ rootScope.error хорошо обновляется, но не main.error?

+0

Зачем вам нужно связывать $ rootScope.error с main.error? Это избыточно. – Chrillewoodz

ответ

0

Я бы посоветовал вам не делать то, что вы делаете в данный момент, так как действительно избыточно привязывать переменную $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; 
}