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

javascript - AngularJS custom datepicker directive -

javascript - jQuery date picker - Disable dates after the selection from the first date picker -