Skip to content

Commit

Permalink
Use ArrayReduction.defineProperty
Browse files Browse the repository at this point in the history
  • Loading branch information
rafaelw committed May 9, 2013
1 parent 68a880f commit 5b29fb7
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 9 deletions.
29 changes: 21 additions & 8 deletions examples/how_to/array_reduction.html
Expand Up @@ -7,24 +7,37 @@ <h1>Reduction</h1>
<template repeat="{{ items }}">
<div>{{ name }}: <input type="checkbox" checked="{{ selected }}"><input type="number" value="{{ amount }}"></div>
</template>
Sum: <input disabled value="{{ sum.value }}"><button disabled?="{{ noneSelected.value }}">Only Enable If Any Selected</button>
Sum: <input disabled value="{{ sum }}"><button disabled?="{{ noneSelected }}">Only Enable If Any Selected</button>
</template>
</form>

<script>
var t = document.getElementById('reduction');
t.model = {
var model = {
items: [
{ name: 'One', amount: 1, selected: false },
{ name: 'Two', amount: 2, selected: false },
{ name: 'Three', amount: 3, selected: false }
]
};
t.model.noneSelected = new ArrayReduction(t.model.items, 'selected', function(prev, current) {
return prev && !current;
}, true);

t.model.sum = new ArrayReduction(t.model.items, 'amount', function(prev, current) {
return Number(prev) + Number(current);
// reduction1 must be close()'d if Object.observe is not implemented otherwise => memory leak.
var reduction1 = ArrayReduction.defineProperty(model, 'noneSelected', {
array: model.items,
path: 'selected',
initial: true,
reduce: function(prev, current) {
return prev && !current;
}
});

// reduction2 must be close()'d if Object.observe is not implemented otherwise => memory leak.
var reduction2 = ArrayReduction.defineProperty(model, 'sum', {
array: model.items,
path: 'amount',
reduce: function(prev, current) {
return Number(prev) + Number(current);
}
});

document.getElementById('reduction').model = model;
</script>
2 changes: 1 addition & 1 deletion third_party/ChangeSummary

0 comments on commit 5b29fb7

Please sign in to comment.