javascript - Why directly not able to call a function from `controller` in `AngularJs` -


i trying update clock time in h1 element. trying update time calling function setting interval, not able call. find solution apply.

but understand logic behind this. explain me reason why not able call , why should use apply method..?

here work:

angular.module('book', [])  .controller('mycontroller', function ($scope) {      var updateclock = function() {          $scope.clock = new date();      };      setinterval(function() {          updateclock(); //not working when call here...?          //$scope.$apply(updateclock); //it works!      }, 1000);      updateclock(); //it works in first time.  });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>  <div ng-app="book">     <div ng-controller='mycontroller'>          <input ng-model="name" type="text" placeholder="your name">          <h1>hello {{ clock }}</h1>      </div>  </div>

in short

angular run $digest cycle on particular event($digest cycle responsible 2 way data binding or dirty checking).the event may when $scope function called ,$http return data ,$timeout,$interval etc.but if used other angular not know thing change( settimeout javascript function).so explicitly need tell angular , angular gives $apply.

in long

refer link http://tutorials.jenkov.com/angularjs/watch-digest-apply.html


Comments

Popular posts from this blog

Payment information shows nothing in one page checkout page magento -

tcpdump - How to check if server received packet (acknowledged) -