La función del controlador es llamada dos veces usando ng-show

Tengo una configuración de aplicación Angular muy simple, el siguiente código:

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>

Yapp.js

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

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

Si ejecuta esto con su consola abierta veráMyCtrl llama una vez ylisto llamado dos veces. He pasado horas tratando de resolver esto, no veo ninguna razón por la que$scope.ready Se llamaría cualquier cosa, pero exactamente una vez.

Si usas un Angular v1.1.5 y usasng-if en lugar deng-show Tendrás el mismo comportamiento, pero si usasng-init llama correctamente$scope.ready una vez. En mi caso necesitaréng-show ong-if.

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

Aclaración: Para elaborar sobre lo que estoy apuntando, digamos$scope.ready en algún momento vuelve luegofalse (Tal vez haga una llamada AJAX, que NO debería ser llamada más de una vez), me gustaría que "algún contenido" ya no esté visible. Es decir, comportamiento dinámico basado en el resultado de$scope.ready.

¿Algunas ideas? ¡Gracias por la ayuda!

Para el registroesta yesta No son el mismo problema.

Respuestas a la pregunta(2)

Su respuesta a la pregunta