2017-01-26 2 views
0

Ich habe einen Ladebildschirm zu zeigen, wenn ich Daten auf dem Server speichern, aber es wird nicht aktualisiert, bis ich meine $http Anfrage fertig bin. Kann jemand erklären warum?Winkelbereich, Controller nesting

Controller:

app.controller('controller1',controller1); 
controller1.$inject=['$scope', '$http', 'myService', 'basketService']; 
function controller1($scope, $http, myService, basketService) { 
    //code  
}; 

app.controller('controller2',controller2); 
controller2.$inject=['$scope', '$http', 'myService', 'basketService']; 
function controller2($scope, $http, myService, basketService) { 
    $scope.doSomething = function(){ 
     $scope.iWantToUpdateThis = true; 
    };  
}; 

HTML:

<body ng-controller="controller1"> 
    <div ng-cloak ng-show="iWantToUpdateThis"> 
    </div> 
    //code 
    <button ng-controller="controller2" ng-click="doSomething()"> 
     clickMe 
    </button> 
<body> 

ich $scope.$apply() mit ausprobiert habe, aber er sagt, dass ein verdauen Schleife bereits bei der Ausführung ist.

+0

$ scope. $ Apply() nicht scope.apply() – MMK

+0

versuche mit $ timeout (function() {$ scope.iWantToUpdateThis = true}); – MMK

+0

Haben Sie darüber nachgedacht, $ rootScope zu verwenden, um das Feld zu speichern? –

Antwort

0

$scope.iWantToUpdateThis = true; ist in 'controller1', während Sie seinen Wert in 'controller2' aktualisieren

Sie gehen haben die Funktion in controller2 zu ändern:

$scope.$parent.iWantToUpdateThis = true;

Hier habe ich eine habe plunker für Sie.

+0

vielen dank jetzt bekomme ich es! – AetherSeal