/ / Controlador filho executado antes do pai - javascript, angularjs, angularjs-scope, angularjs-controller

Controlador filho executado antes do pai - javascript, angularjs, angularjs-scope, angularjs-controller

Na minha visão pai, recupero um arquivo json com esse código e uso ng-repeat em uma visão filho para acessá-lo.

    $scope.services = Services.query();

factory("Services", function($resource) {
return $resource("/services/:serviceId", {
serviceId: "@_id"
}, {});

Até aqui está tudo bem.
Os problemas começam quando eu quero acessar ovisão infantil diretamente ou quando atualizo a página. Ainda consigo mostrar o conteúdo do arquivo json na exibição com ng-repeat. Mas não consigo usar o arquivo no controlador filho. Tentei esse código no filho para tentar identificar o problema

  if($scope.services){ // in both cases it"s not null
var s="";
if($scope.selectedService)
s="NO refresh an NO direct access";
else
s="refresh or direct access";

console.log(s);
console.log("data : " + $scope.services);
console.log($scope.services.length);
console.log($scope.services)
}

E aqui está a saída insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui

Talvez o controlador filho seja executado antes do controlador pai? como posso resolver esse problema?

Respostas:

0 para resposta № 1

O problema nesse caso é provavelmente que o pai chama $ resource que possui atraso, porque busca o JSON com uma solicitação HTTP assíncrona.

Durante esse atraso, o controlador filho será executado.

Você pode verificar isso adicionando um console.log no controlador pai:

console.log("Starting Services.query()");
$scope.services = Services.query();

Então você verá que o controlador pai é executado antes do controlador filho.

A solução para isso é alterar a lógica no controlador filho para não depender disso. $scope.services estar disponível quando o controlador é criado.