Thanks for the suggestion, it definitely works, although the lack of encapsulation bugs me - it feels wrong to be allocating storage in a parent for use in a child component. However, I've successfully experimented with a couple of alternatives, each with their own pros and cons:
* Passing a parent observable as a parameter to the component, where it assigns self to the observable.
* Using ko.dataFor() to retrieve the component model from a DOM element. Note that when using custom elements, you have to use ko.dataFor() on one of the templated DOM elements, not the containing custom element, as the latter will return the parent model.
Cheers,
Tim