 <p>If you are using a function inside the template, it generally will run twice times. That is the way AngularJS ensures the function was ran.</p> <p><a href="http://jsfiddle.net/iagomelanias/U3pVM/19526/" rel="nofollow noreferrer">You can see the same happening in this JSFIddle example.</a></p> <p><a href="https://i.stack.imgur.com/PZ8sM.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/PZ8sM.png" alt="enter image description here"></a></p> <p><strong>HTML:</strong></p> <pre><code>&lt;div ng-app&gt; &lt;div ng-controller="ExampleCtrl"&gt; {{hey()}} &lt;/div&gt; &lt;/div&gt; </code></pre> <p><strong>JS:</strong></p> <pre><code>function ExampleCtrl($scope) { $scope.hey = function() { console.log('here i am'); } } </code></pre> <h2>So, what to do?</h2> <p>Do not load the data using a function in the template, load it directly when the controller is initialized. <a href="http://jsfiddle.net/iagomelanias/U3pVM/19528/" rel="nofollow noreferrer">As in this example.</a></p> <pre><code>function ExampleCtrl($scope, $http) { $http.get(...); } </code></pre> <p><strong><em>PS:</strong> are you not using the get method from jQuery, yep? Please. AngularJS has your own http methods. <a href="https://docs.angularjs.org/api/ng/service/$http" rel="nofollow noreferrer">See here</a>.</em></p>