Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
443 views
in Technique[技术] by (71.8m points)

javascript - TypeError applying precompiled Handlebars templates with a context

Pardon the noob question but I simply can't get precompiled Handlebars templates to do anything but barf out

TypeError: 'undefined' is not a function (evaluating 'templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data)')

each time I apply a context to a (precompiled) template.

Given the following files and contents:

  • hello.handlebars: <p>Hello, {{name}}</p>
  • templates.js: the result of compiling hello.handlebars via handlebars hello.handlebars -f templates.js
  • index.html: includes Handlebars RC1 runtime in the head and this for the body:

    <body id="body">
      <script src="templates.js" type="text/javascript" charset="utf-8"></script>
      <script type="text/javascript" charset="utf-8">
        var compiledTemplate = Handlebars.templates['hello'];
        var html = compiledTemplate({ name: 'World' });
        document.getElementById('body').innerHTML = html;
      </script>
    </body>
    

Calling compiledTemplate() throws that error above no matter what I do--yet I'm able to get client-side templates to compile and display just fine. All the walkthroughs and tutorials I've seen skip through this like its obvious so I must be missing something silly. Any ideas?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Be sure to match the versions of the Handlebars server and client packages. A way to check the version of the compiled template is the following:

handlebars a_template_of_yours.handlebars | grep "compilerInfo"

It should output something like this:

this.compilerInfo = [4,'>= 1.0.0'];

The first value is the Compiler Revision, which should match the output of the following code on your browser:

Handlebars.COMPILER_REVISION

If you used npm to download your Handlebars compiler, specify the version which you need. Here is an example for handlebars.runtime-v1.3.0.js:

npm install [email protected] -g


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...