In newnew UI, this is already supported : https://github.com/typesafehub/activator/blob/wip/warry-newnewui/ui/app/assets/commons/tpl-helpers.js#L62

This snippet is a custom binding that will handle scroll position everywhere we need it. it's used by passing a unique label to it (in order to store it), like this: https://github.com/typesafehub/activator/blob/wip/warry-newnewui/ui/public/templates/tutorial.html#L2

Let me explain why it's different.

This custom knockout binding illustrates how I want to modularise everything. Right now, we need to build this big dom to apply all bindings at once. Therefore, we end up with those huge classes for the states (like plugins, and model.js). The general idea is that plugins should only handle their stuffs, and delegate to widgets / custom bindings strictly UI stuffs.