Fix rendering of static boolean attributes

This commit is contained in:
Patrick Steele-Idem 2015-01-25 08:29:29 -07:00
parent 9f350a6e05
commit f26f220860
6 changed files with 37 additions and 6 deletions

View File

@ -224,6 +224,9 @@ ElementNode.prototype = {
}
if (attr.value === null || attr.value === undefined) {
template.text(' ' + name);
} else if (attr.value === '') {
// Treat empty attributes as boolean attributes
template.text(' ' + name);
} else if (template.isExpression(attr.value)) {
template.attr(name, attr.value, attr.escapeXml !== false);
} else {

View File

@ -356,4 +356,18 @@ describe('marko/marko' , function() {
url: '/foo'
}, done);
});
it("should support boolean attributes", function(done) {
testRender("test-project/html-templates/boolean-attributes.marko", {
options: [
{ value: 'red', selected: false },
{ value: 'green', selected: true },
{ value: 'blue', selected: false }
],
disabled: false,
checked: true
}, done);
});
});

View File

@ -0,0 +1,13 @@
<input type="checkbox" checked="${data.checked}">
<button disabled>Button</button>
<select>
<option value="${option.value}"
selected="${option.selected}"
for="option in data.options">
${option.value}
</option>
</select>

View File

@ -0,0 +1 @@
<input type="checkbox" checked><button disabled>Button</button><select><option value="red">red</option><option value="green" selected>green</option><option value="blue">blue</option></select>

View File

@ -8,6 +8,6 @@
<span class="{?count;under\;-50\\;over-50}"></span>
<input type="checked" checked="{?true}"/>
<input type="checked" checked="{?true;${true}}"/>
{?count>50;{?name;Hello $name! }Over 50;{?name;Hello $name! }50 or less}

View File

@ -1,14 +1,14 @@
<template
<template
params="name,count">
<div class="{?count>50;over-50}"></div>
<div class="{?count lt 50;under-50}"></div>
<div class="{?count lt 50;under-50;over-50}"></div>
<div class="{?count lt 50;under-50;#}"></div>
<span class="{?count;under\;-50\\;over-50}"></span>
<input type="checked" checked="{?true}"/>
<input type="checked" checked="{?true;${true}}"/>
{?count>50;{?name;Hello $name! }Over 50;{?name;Hello $name! }50 or less}
</template>