I am new to angular js and currently stuck with very wired kind of a bug. function in a controllers runs twice when its called by view loaded against a route.
http://jsfiddle.net/4gwG3/5/
you will see alert twice!!
my view is simple
and my app code is following
var IB = angular.module('IB', []);      //channel controller IB.controller('channelsController', function ($scope, $routeParams) {     $scope.greet = function () {         alert('hi');     }; });   IB.config(function ($routeProvider) {     $routeProvider     .when('/channels', {         controller: 'channelsController',         template: '{{greet()}}'     })      .otherwise({ redirectTo: '/channels' });  }); 
                First check that you're not initializing your Angular app twice (by having it initialized automatically with ng-app).
One time I had 2 html pages with ng-app (one for login.html and another for main.html) and this was a problem I realized later.
Second and for me the most important, check if you have attached your controller to multiple elements. This is a common case if you are using routing.
In my case I was navigating to DashboardController like so:
app.config(function($routeProvider){     $routeProvider     .when('/', {         controller: 'DashboardController',         templateUrl: 'pages/dashboard.html'     }) });   But I also had this in dashboard.html:
<section class="content" ng-controller="DashboardController">   Which was instructing AngularJS to digest my controller twice.
To solve it you have two ways:
removing ng-controller from your html file like this:
<section class="content">   or removing controller from routing (that is normally situated in app.js):
app.config(function($routeProvider){ $routeProvider         .when('/', {             templateUrl: 'pages/dashboard.html'         })     }); 
                        I think by creating an interpolation {{greet()}}, you create a watch on function greet. This function  can get call as many time as digest cycle runs, so it is not a question about it running 1 or 2 times. So you should not depend upon the times the function is called.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With