Função de controlador sendo chamada duas vezes usando ng-show

Eu tenho uma configuração de aplicativo Angular muito simples, codifique da seguinte maneira:

index.html

<!DOCTYPE html>
<html>
  <head>
    <script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js'></script>
    <script src='app.js'></script>
  </head>
  <body ng-app="app">
    <div ng-controller="MyCtrl">
      <div ng-show="ready()">
        Some content
      </div>
    </div>
  </body>
</html>

Eapp.js

var app = angular.module('app', []);

app.controller('MyCtrl', function($scope) {
  console.log("MyCtrl called")
  $scope.ready = function() {
    console.log("ready called");
    return true;
  }
})

Se você executar isso com o seu console aberto, você veráMyCtrl ligou uma vez epronto chamado duas vezes. Eu passei horas tentando descobrir isso, não vejo razão para$scope.ready Seria chamado de qualquer coisa, mas exatamente uma vez.

Se você usa um Angular v1.1.5 e usang-if ao invés deng-show você terá o mesmo comportamento, mas se você usarng-init ele chama corretamente$scope.ready um tempo. No meu caso vou precisarng-show oung-if.

Plunkr:http://plnkr.co/edit/ZSwVNLeFSuhbouXZu9SM?p=preview

Esclarecimento: Para elaborar sobre o que eu estou apontando, digamos$scope.ready em algum momento depois retornafalse (talvez faça uma chamada AJAX, que NÃO deve ser chamada mais de uma vez), eu gostaria que "Some content" não ficasse mais visível. Ou seja, comportamento dinâmico baseado no resultado de$scope.ready.

Alguma ideia? Obrigado pela ajuda!

Para o registroisto eisto não são o mesmo problema.

questionAnswers(2)

yourAnswerToTheQuestion