I'm not familiar with Vue specifically, but it sounds like you're adding text to your element. Is there some Vue method to populate the target element with html? Then you can pass the nl2br'd value to that.
For example, with vanilla javascript you can set the content of a target element using either target.innerText or target.innerHTML. The former would render the string "Hello,<br />This is my first message", the latter will render the proper HTML.
Edit: It looks like you may be able to use {{{ data }}} (rather than {{ data }}?) to render the HTML in your target element using Vue.