Vue
by Damian Dulisz
HTML
<div id="app">
<h2>Books:</h2>
<ol>
<li v-for="(book, index) in books">
<label>
<input type="checkbox" v-on:change="toggle(book)" v-bind:checked="book.read">
<del v-if="book.read">
{{ book.title }}
</del>
<span v-else>
{{ book.title }}
</span>
</label>
<button @click="rmvBook">Delete</button>
</li>
<form @submit.prevent="addBook">
<input v-model="title" placeholder="Title" type="text" required>
<button>Add book</button>
</form>
</ol>
</div>
CSS
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}
li {
margin: 8px 0;
}
h2 {
font-weight: bold;
margin-bottom: 15px;
}
del {
color: rgba(0, 0, 0, 0.3);
}
Vue
new Vue({
el: "#app",
data: {
books: [
{ title: "Wiedzmin", read: false },
{ title: "Władca Pierścieni", read: false },
],
title: ''
},
methods: {
toggle: function (book){
book.read = !book.read
},
addBook: function () {
this.books.push({ title: this.title, read: false }),
this.title = ''
},
rmvBook: function (book) {
this.books.splice(this.books.indexOf(book), 1)
}
}
})