fix: use $watch instead of $observe

to make it really works