The watch expression seems wrong here.  All this will do is watch the attribute value of ng-model, which should remain the same.

What it sounds like you want is `scope.$watch(function() { return ngModel.$modelValue; }, ...)` if I understand correctly.  This seems strange to me though, since when the model value updates, the $formatters in ngModel controller should run, a new $viewValue should be set, and then ngModel.$render should be called, which should update TinyMCE.  Can you verify whether something else is wrong first?