vendor/handlebars/README.markdown in handlebars-0.3.2 vs vendor/handlebars/README.markdown in handlebars-0.4.0

- old
+ new

@@ -17,11 +17,11 @@ In general, the syntax of Handlebars.js templates is a superset of Mustache templates. For basic syntax, check out the [Mustache manpage](http://mustache.github.com/mustache.5.html). Once you have a template, use the Handlebars.compile method to compile the template into a function. The generated function takes a context argument, which will be used to render the template. ```js -var source = "<p>Hello, my name is {{name}}. I am from {{hometown}}. I have " + +var source = "<p>Hello, my name is {{name}}. I am from {{hometown}}. I have " + "{{kids.length}} kids:</p>" + "<ul>{{#kids}}<li>{{name}} is {{age}}</li>{{/kids}}</ul>"; var template = Handlebars.compile(source); var data = { "name": "Alan", "hometown": "Somewhere, TX", @@ -110,11 +110,11 @@ When calling a helper, you can pass paths or Strings as parameters. For instance: ```js Handlebars.registerHelper('link_to', function(title, context) { - return "<a href='/posts" + context.id + "'>" + title + "</a>" + return "<a href='/posts" + context.url + "'>" + title + "!</a>" }); var context = { posts: [{url: "/hello-world", body: "Hello World!"}] }; var source = '<ul>{{#posts}}<li>{{{link_to "Post" this}}}</li>{{/posts}}</ul>' @@ -122,11 +122,11 @@ template(context); // Would render: // // <ul> -// <li><a href='/hello-world'>Post!</a></li> +// <li><a href='/posts/hello-world'>Post!</a></li> // </ul> ``` When you pass a String as a parameter to a helper, the literal String gets passed to the helper function. @@ -135,13 +135,13 @@ ### Block Helpers Handlebars.js also adds the ability to define block helpers. Block helpers are functions that can be called from anywhere in the template. Here's an example: ```js -var source = "<ul>{{#people}}<li>{{{#link}}}{{name}}{{/link}}</li>{{/people}}</ul>"; -Handlebars.registerHelper('link', function(context, fn) { - return '<a href="/people/' + this.__get__("id") + '">' + fn(this) + '</a>'; +var source = "<ul>{{#people}}<li>{{#link}}{{name}}{{/link}}</li>{{/people}}</ul>"; +Handlebars.registerHelper('link', function(options) { + return '<a href="/people/' + this.id + '">' + options.fn(this) + '</a>'; }); var template = Handlebars.compile(source); var data = { "people": [ { "name": "Alan", "id": 1 }, @@ -218,10 +218,11 @@ <pre> Precompile handlebar templates. Usage: handlebars template... Options: + -a, --amd Create an AMD format function (allows loading with RequireJS) [boolean] -f, --output Output File [string] -k, --known Known helpers [string] -o, --knownOnly Known helpers only [boolean] -m, --min Minimize output [boolean] -s, --simple Output template function only. [boolean] @@ -281,9 +282,10 @@ ``` Known Issues ------------ * Handlebars.js can be cryptic when there's an error while rendering. +* Using a variable, helper, or partial named `class` causes errors in IE browsers. (Instead, use `className`) Handlebars in the Wild ----------------- * [jblotus](http://github.com/jblotus) created [http://tryhandlebarsjs.com](http://tryhandlebarsjs.com) for anyone who would like to try out Handlebars.js in their browser.