I&#x27;m surprised that the &quot;nothing complex &#x2F; hack up a quick prototype&quot; recommendation is Angular. I get that it&#x27;s powerful, but there&#x27;s so much deep magic inside angular [1] that I find even simple stuff takes significant forethought and wrangling.<p>As a substitute, why not Ractive.js? It&#x27;s simple and does what you&#x27;d expect. You put<p><pre><code>    {{#each foo:i}}
       &lt;span class=&quot;{{classname}}&quot;&gt; {{foo[i]}} &lt;&#x2F;span&gt;
    {{&#x2F;each}}
</code></pre>
in one place, and<p><pre><code>    ractive.set({
        foo: [&#x27;a&#x27;, &#x27;b&#x27;, &#x27;c&#x27;],
        classname: &quot;output&quot;,
    })
</code></pre>
in another, and things just work. No messing with insanity like:<p><pre><code>    angular.element(myDomElement).scope().$apply();


</code></pre>
&#x2F;rant. Maybe I&#x27;m missing something deep here.<p>[1] Introspecting the parameter names of the callback function I passed in? <i>Really?</i>