I would actually wrap this all up as a Custom Web Component (although you can also use <oj-bind-dom> )
Loads about creating custom components here:
And a MOOC
Thanks, I had thought a custom web component might be overkill for this but I will check it out as i've never had to do one before so might be worth it just to learn the methods.
Also, are there any oj-bind-dom examples anywhere where it uses a html file as opposed to a string of html text? Couldnt seem to find much.
To get the HTML from a file then you can simply include that as a text! reference in your define() block.
e.g. define[...,'text!./template.html'], function(...,templateAsString)
The you can convert that to a set of DOM nodes and pass that to the bind dom