AngularJS Directives: Change $scope not reflected in UI
Event handlers are called "outside" Angular, so although your $scope
properties will be updated, the view will not update because Angular doesn't know about these changes.
Call $scope.$apply()
at the bottom of your event handler. This will cause a digest cycle to run, and Angular will notice the changes you made to the $scope
(because of the $watches
that Angular set up due to using {{ ... }}
in your HTML) and update the view.
This might be also a result of different problem but with the same symptoms.
If you destroy a parent scope of the one that is assigned to the view, its changes will not affect the view in any way even after $apply()
call. See the example - you can change the view value through the text input, but when you click Destroy parent scope!, model is not updated anymore.
I do not consider this as a bug. It is rather result of too hacky code in application :-)
I faced this problem when using Angular Bootstrap's modal. I tried to open second modal with scope of the first one. Then, I immediately closed the first modal which caused the parent scope to be destroyed.
use timeout
$timeout(function () { code.... }, 0);