angular ngmodel - nGModelController.$render not called even after setting value through $setViewValue -


i learned of ngmodelcontroller, , had been experimenting it. directive input field , on keydown, set value of model ngmodelcontroller.$setviewvalue. should call $render written in angular documentation , explained in blog. $render in code below, not called. please suggest.

plunkr

angular code

angular.module('controls',[]);  angular.module('controls') .controller('spinner',['$scope',         function($scope){             $scope.spinner="";         } ]) .directive('spincontrol',function(){     return {         restrict : 'e',         templateurl : 'spin.html',         require : 'ngmodel',         link : function(scope,elem,attrs,ngmodelcontroller){             ngmodelcontroller.$render = function() {                 alert('render called');             };              elem.on('keyup', function(event){                 ngmodelcontroller.$setviewvalue(elem.find('input').val());             });         }     }; }); 

p.s. - tried find similar question on so, couldn't find it. guide me question if duplicate.

$render called when external model value gets changed outside directive. $setviewvalue won't trigger (because it's assumed that, since view changed, needed changes rendered).

if have <spin-control ng-model="spinner"></spin-control>, try putting in spinner controller:

$timeout(function () {      $scope.spinner = 'new value'; }, 1000); 

(remember inject $timeout controller). 1000 seconds after controller loads alert() should show up.


Comments