handlebars.js - Why should we wrap our templates inside script blocks? -


background

all js template engines recommend putting template text inside script blocks so:

<script id="peopletemplate" type="text/template">    {#people}    <div class="person">name: {firstname} {lastname}</div>    {/people} </script> 

but many developers (understandably) dislike because lose html syntax highlighting in code editor inside script block. i've seen workarounds this: keep correct html syntax highlighting in <script> "text/html" templates . question not asking workarounds.

i know 1 danger web browsers attempt fix invalid html calling $('#peopletemplate').html() have unpredictable results. however, off top of head, cannot think of examples illustrate this.

question

what of other dangers of replacing script tag div ?

bonus: can come fiddle illustrates browser html auto-fixing?

here's example of browser auto-fixing issue: http://jsfiddle.net/kpasf/

the template is:

<table>     <tr>         {{#numbers}} <th> {{.}} </th> {{/numbers}}     </tr> </table> 

the data is:

var json = { "numbers": [ 1, 2, 3 ] }; 

see fiddle http://jsfiddle.net/kpasf/ different results when template in hidden div, , again in script block.

explanation

when put in hidden <div>, browser strip content outside <th> tags (the {{#numbers}} , {{#numbers}} mustache tags). leaves {{.}}, bind json object , render [object object]

putting template in <script type='text/html'> block works expect, 3 <th>'s

example of how browser mangles template if housed inside <div> instead of <script>:

enter image description here


Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

css - Make div keyboard-scrollable in jQuery Mobile? -

ruby on rails - Seeing duplicate requests handled with Unicorn -