We wrote our own data binding mechanism that synchronizes the angular.js model with a view model on the server side. The server is written in ASP.NET but i think this approach can be adapted to other server technologies.
For two-way binding where the server can update the client's view model in real time, you will always need a duplex transport layer that builds on long-polling or websockets. We use SignalR for that.
Initially, the whole server-side data model must be sent to the client. We serialize it to JSON and send it via SignalR.
Server-side changes of the C# view model properties are sent to the client as a packet containing the path to the property, e.g. Persons[42].Address.City, and the value itself, e.g. New York.
Client-side changes of the javascript view model properties are sent to the server in the same way. To catch the change events, we encapsulate all fields of the original javascript model in get/set properties where the setter sends the update packet to the server.
Server-side methods of the C# view model can be invoked in a similar way. All objects in the view model have an invokeMethod function that can be used like this: Products[42].Manufacturer.invokeMethod('SendEmail', 'mailsubject', 'mailbody'). This will send a packet to the server containing the method path Products[42].Manufacturer.SendEmail and the arguments as an array of ['mailsubject','mailbody'].
The source code can be found here: SharpAngie. For technologies other than .NET you probably just need the code from sharp-angie.js.