1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title>vue</title>
6 </head>
7 <body>
8
9 <div id="app">
10 <!--v-on:keyup.enter="addNewTodo"简写成@keyup.enter="addNewTodo"-->
11 <input type="text"
12 v-model="newTodoText"
13
14 v-on:keyup.enter="addNewTodo"
15 placeholder="add a todo"
16 />
17 <ul>
18 <li
19 is="todo-item"
20 v-for="(todo,index) in todos"
21 :key="todo.id"
22 :title="todo.title"
23 @remove="todos.splice(index, 1)"
24 ></li>
25 </ul>
26 </div>
27 <!-- 开发环境版本,包含了用帮助的命令行警告 -->
28 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
29 <script type="text/javascript">
30 Vue.component('todo-item',{
31 template: '\
32 <li>\
33 {{ title }}\
34 <button @click="$emit(\'remove\')">X</button>\
35 </li>\
36 ',
37 props:['title']
38 })
39 new Vue({
40 el:'#app',
41 data: {
42 todos: [
43 {
44 id: 1,
45 title: 'Do the dishes',
46 },
47 {
48 id: 2,
49 title: 'Take out the trash',
50 },
51 {
52 id: 3,
53 title: 'Mow the lawn'
54 }
55 ],
56 newTodoText:'',
57 nextTodoId: 4
58 },
59 methods: {
60 addNewTodo: function () {
61 this.todos.push({
62 id: this.nextTodoId++,
63 title: this.newTodoText
64 })
65 this.newTodoText = ''
66 }
67 }
68 })
69 </script>
70 </body>
71 </html>
![]()