Hi julian,
Hmmm, yes, that is tricky. The naive approach, connecting the two remove methods directly together in both directions, obviously creates a call cycle.
MV* frameworks typically break this cycle by introducing some sort of mediator in one direction. Usually, user events flow through a mediator (aka "controller"), which updates the data. In contrast, data changes may be allowed to flow directly to the view.
You could try that: introduce a mediator object between the view and data, and change the "on" event connection to call a method on the mediator, which could have an injected reference (via properties, ready, or constructor arg) to the data and call remove on it (there would be no AOP connection from the view's remove to the data's remove). That'd break the cycle, and allow you to make a direct connection from the data to the view (without the need for the intermediary advice module).
It seems a bit less elegant at first, but also removes the need for the two intermediary advices in favor of a single mediator. Mediators can also be a useful place to put application logic, data triage, etc etc.
Anyway, let me know if that helps!