using ng-change instead of $watch, added update button for text to prevent race conditions and losing focus when typing.