2017-01-26 2 views
0

У меня есть экран загрузки, чтобы показать, когда я храню данные на сервере, но он не обновляется, пока я не закончу свой запрос $http. Может кто-нибудь объяснить, почему?Угловая область, контроллер вложенности

Контроллеры:

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> 

Я попытался с помощью $scope.$apply(), но он говорит, что переваривать цикл уже на исполнение.

+0

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

+0

попробуйте использовать $ timeout (function() {$ scope.iWantToUpdateThis = true}); – MMK

+0

Вы думали об использовании $ rootScope для хранения поля? –

ответ

0

$scope.iWantToUpdateThis = true; в «controller1» в то время как вы обновите его значение в «controller2»

Вы идете, чтобы изменить функцию в controller2 на:

$scope.$parent.iWantToUpdateThis = true;

Здесь я сделал plunker для вас.

+0

спасибо большое, теперь я понял! – AetherSeal

Смежные вопросы