that is because if you execute something async outside of the angular context (like native javascript events) angulars watcher does not recognize any changes. Wrap $scope.ExtraData = "3"; in a $timeout call and it should work.
it is ugly and slow^^. You should avoid such things in professional js webdevelopment. Because you are manipulating the dom from somewhere. If you need to manipulate a special part of a page --> you should write directives in angular. They want you to not have access to the whole dom from everywhere. that is the reason they are using jqlite and not the full jquery lib.