It isn't to do with VUE it is the way the dashboard interacts with templates.
When the browser is refreshed it sends back to you the last message that was sent to the template or from the template. In your case this is the last message that you sent, as you can see by comparing the browser console output with the debug log in node-red. This message does not have what your watch msg function is expecting which is why it resets everything.
To solve your problem, you have to make sure that any message you send to the template or send from the template has all the information you need to display it correctly. I do this by including a property which I call _data
in any messages I send from the template. Then if I receive a message containing _data
I know that it is caused by a refresh and I can use the contents of _data to set up the widgets.