The only advantage of 2-way data binding is called hype.
No, there is no real need of 2-way data binding, otherwise it would be invented and be part of Web Platform on a lower level long time ago.
Program should be simple, has one begin, one flow and one end.
When you need dynamic form updates, you make only these parts of your code dynamic. Usually you need to update whole form when user click Save button, it's a basic POST or AJAX POST request. In case of AJAX it's just few lines of JavaScript using Fetch API and DataForm API. Same goes with case where you need to update input instantly without clicking save what is popular today as well. I usually have own tiny Vanilla JS components I can apply on any form with few HTML code without writing JS at all. For example, it could be as easy as adding data-ajax attribute to <form> or specific input.
I recommend creating a Model object (API-speaking object) for each of your data models same way as on backend. I have my own Fetch wrapper in BunnyJS Api base object I use as blueprint for that.
const UserModel = Object.assign({}, Api, {
updateProfile(profileData) {
return this.post('/me/update-profile', profileData);
}
});
And in HTML I just specify which action should be called when Form is submitted
<form data-action="UserModel.updateProfile">