Two-way data binding is only syntactic sugar for setting value as a property and assigning it's value on event listener. You can read about it in the docs
Except it has a drastic effect on the architecture and data flow of your application (which some believe to be detrimental). I think this is more what the OP was alluding to.
No, in Vue.js it really doesn't have any drastic effect - or almost any effect on what you would call "architecture".
I have to ask - are you just talking abstractly about two way data binding or specifically as implemented in Vue.js?
I was speaking more generally but yes, even in Vue.js it does. It's impossible to escape for any data-binding system.
The reason is that "effects", "data modifications", or whatever you want to call them are now local and appear everywhere. As your application grows it becomes harder and harder to know where and how your data model is updated.
This becomes especially apparent as you introduce more complicated workflows where you can't update a single value of state at a time but instead would like to treat it as a transaction.
It can also appear when dealing with computed/derived state.
Two-way data binding is fine for a simple form of 5 values. But once you start trying to build a larger application the desire for a top-down data flow and isolated state modifications becomes very apparent.
It's not an attack on Vue.js, as you have options like veux. I'm merely stating that there are very large disadvantages to two-way databinding itself.
I'm having a hard time reconciling what you're describing with the Vue.js development experience. I have lot of experience with Angula so I understand what you're saying.
But in Vue, two way data binding is _very_ local. It doesn't appear everywhere, on the contrary. It's barely worth mentioning when describing how development works. Honestly, this whole debate just seems weird - take away two-way data binding from Vue.js and at most you'd get several sighs from developers as they change few form-handling lines of code.
You mistake 2way data binding with ui decomposition and right view model structure, if you have those problems.
With the right view models everything becomes is easy and simple, but you do not get there right away, it's hard to learn, and no framework will bring you there.
This is due to ppl spending way to much time chasing frameworks in vogue, than learn to architect applications.
I love vue btw.