I have not tried it myself but it seems reasonable. I hope the author doesn't mind coping his answer from Detached observables when re-using element.
Having looked into the polymer.js information bit I have found that there is a cancelUnbindAll function which must be called when the element is created or a preventDispose property set to true.
For anyone that might need to do the same, in the Dart implementation you must call cancelUnbindAll in the leftView function after the super call, as follows:
void detached() {
super.leftView();
this.cancelUnbindAll(preventCascade: true);
}
Alternatively, you can simply override the preventDispose property in your custom element:
bool get preventDispose => true;
EDIT
There is also a preventDispose
see https://github.com/Polymer/polymer/issues/312