Yea since $scope is injected, if you go into a new scope you'll need someway to reference it.
Kinda like how you'll see code that has "var me = this;" so that they can access the correct object inside of a different scope where this would point to something else.

Without seeing the code for the addition of a new topic I wouldn't really know why the $watch isn't working.