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
Talvez o controlador filho seja executado antes do controlador pai? como posso resolver esse problema?
Respostas:
0 para resposta № 1O 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.