console
new Yox({
el: '#app',
template: '#template',
data: {
list: [
{
name: 'John',
checked: false,
},
{
name: 'Mike',
checked: false,
}
]
},
computed: {
allChecked: {
deps: ['list', 'list.*.checked'],
get: function () {
var list = this.get('list')
for (var i = 0, len = list.length; i < len; i++) {
if (!list[i].checked) {
return false
}
}
return len > 0
},
set: function (allChecked) {
var list = this.get('list')
for (var i = 0, len = list.length; i < len; i++) {
this.set('list.' + i + '.checked', allChecked)
}
}
}
}
})
<div id="app"></div>
<script id="template" type="text/plain">
<div>
<label>
<input type="checkbox" model="allChecked">
all
</label>
{{#each list}}
<div>
<input type="checkbox" model="this.checked">
{{this.name}}
</div>
{{/each}}
</div>
</script>