The "if" block helper shouldn't treat empty arrays as truthy.

Given the data {foo: []}, the following template previously considered
foo to be truthy when it shouldn't have:

    {{#if foo}}
      You should not see me!
    {{else}}
      You should see me!
    {{/if}}
This commit is contained in:
Ryan Grove
2011-04-20 16:56:37 -07:00
parent 038d9b3fee
commit dec196b4d9
2 changed files with 5 additions and 1 deletions
+1 -1
View File
@@ -86,7 +86,7 @@ Handlebars.registerHelper('each', function(context, fn, inverse) {
});
Handlebars.registerHelper('if', function(context, fn, inverse) {
if(!context || context == []) {
if(!context || Handlebars.Utils.isEmpty(context)) {
return inverse(this);
} else {
return fn(this);
+4
View File
@@ -502,6 +502,10 @@ test("if", function() {
"if with boolean argument does not show the contents when false");
shouldCompileTo(string, {world: "world"}, "cruel world!",
"if with undefined does not show the contents");
shouldCompileTo(string, {goodbye: ['foo'], world: "world"}, "GOODBYE cruel world!",
"if with non-empty array shows the contents");
shouldCompileTo(string, {goodbye: [], world: "world"}, "cruel world!",
"if with empty array does not show the contents");
});
test("each", function() {