Pergunta

Eu estou usando PHP para obter dados para a minha fábrica, que mostra corretamente o sucesso função de retorno de chamada dentro do controlador.No entanto, mesmo depois de atribuir os dados retornados $escopo.os clientes, não há que se eu fizer um console.log($escopo.os clientes) após o retorno, e a minha opinião é [ng-repeat] não pegá-la tanto.

Alguma idéia de por que o escopo dos meus dados seria restrito ao interior do sucesso de retorno de chamada, se eu estou atribuindo os dados retornados para o meu $escopo do objeto?

var customersController = function($scope, customersFactory) {
  $scope.customers = [];
  customersFactory.getAllData()
    .success(function(customers) {
      $scope.customers = customers;
      console.log($scope.customers); // Object with correct data
    }); // No errors so only showing happy path
  console.log($scope.customers); // empty []
};
customersModule.controller('customersController', ['$scope', 'customersFactory', customersController]);
Foi útil?

Solução

$http funções acontecer de forma assíncrona.Assim, chamando de console.log após a customersFactory.getAllData estará sempre vazia.

console.log($scope.customers); // Object with correct data

é, na verdade, acontecendo DEPOIS

console.log($scope.customers); // empty []

Você pode confiar que o sucesso de retorno de chamada para definir $scope.customers corretamente, você só precisa de seu site para entender o que vai acontecer mais tarde.Se você PRECISA de escopo.os clientes sejam preenchidos antes da vista de cargas, considere o uso de uma resolução no controlador.

Outras dicas

Não

console.log($scope.customers); // empty []

a execução antes

console.log($scope.customers); // Object with correct data

?

O segundo é um sucesso() chamada de retorno para que ele pudesse executar muito mais tarde do que o primeiro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top