D'accord, je suis complètement stupéfait avec ça. (Et je pourrais regarder sur quelque chose d'évident mais …)
J'ai 2 appels consécutifs à console.log. Il n'y a rien d'autre entre eux
console.log($state); console.log($state.current);
Et voici une image des résultats produits
Pourquoi les 2 produisent-ils différents objets "actuels"? Comment cela peut-il se produire?
Ces appels sont effectués dans un appel ajax tout en résolvant les dépendances d'un itinéraire. Si vous avez besoin de plus de code ou de contexte, faites-le savoir.
Confirmé le même problème sur Chrome et Firefox
Fonction Ajax Call and wrapper (pas de modifications)
normaCtrl.publicNorma = ['$http', '$state', '$stateParams', 'baseUrl', function ($http, $state, $stateParams, baseUrl) { var id = $stateParams.id; return $http.get(baseUrl + "api/public/norma/" + id).then( function (response) { console.log($state); console.log($state.current); console.log($state.current.title); return response.data; } ); }];
Javascript console.log affiche différentes valeurs sur le même objet
AngularJS: comportement de console.log étrange avec asynchrome chrome.storage.local.get ()
Eh bien, voici la réponse pour ceux qui se heurtent à cela.
Console.log affiche des objets muets profondes au dernier état d'exécution , pas à l' état où on a appelé console.log .
Fondamentalement, lorsque vous travaillez avec des objets profonds mutables, Console.log stocke la référence à cet objet au lieu de stocker un clone d'objet.
Étant donné qu'il existe un écart de temps entre le stockage et la visualisation, lorsque vous cliquez sur la flèche pour une inspection plus approfondie, ce que vous voyez est en fait l'état actuel de l'objet et non l'état de l'objet lorsque console.log était appelé .
Une façon de toujours vous assurer que vous utilisez un «instantané d'objet» est d'appeler Json.stringify
ou d'utiliser console.dir
lorsqu'il est disponible.
Bizarre. Est-ce un objet ECMA 5 qui a un getter étrange? Encore ne serait pas logique pour l'appel de l'état ordinaire. Je suppose qu'il n'y a pas que quelque chose de cassé avec votre GC …
Êtes-vous sûr que ces appels sont enregistrés?