index.html 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <!doctype html>
  2. <html data-framework="vue">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Vue.js • TodoMVC</title>
  6. <link rel="stylesheet" href="node_modules/todomvc-app-css/index.css">
  7. <style>[v-cloak] { display: none; }</style>
  8. </head>
  9. <body>
  10. <section class="todoapp">
  11. <header class="header">
  12. <h1>todos</h1>
  13. <input class="new-todo"
  14. autofocus autocomplete="off"
  15. placeholder="What needs to be done?"
  16. v-model="newTodo"
  17. @keyup.enter="addTodo">
  18. </header>
  19. <section class="main" v-show="todos.length" v-cloak>
  20. <input class="toggle-all" type="checkbox" v-model="allDone">
  21. <ul class="todo-list">
  22. <li v-for="todo in filteredTodos"
  23. class="todo"
  24. :key="todo.id"
  25. :class="{ completed: todo.completed, editing: todo == editedTodo }">
  26. <div class="view">
  27. <input class="toggle" type="checkbox" v-model="todo.completed">
  28. <label @dblclick="editTodo(todo)">{{ todo.title }}</label>
  29. <button class="destroy" @click="removeTodo(todo)"></button>
  30. </div>
  31. <input class="edit" type="text"
  32. v-model="todo.title"
  33. v-todo-focus="todo == editedTodo"
  34. @blur="doneEdit(todo)"
  35. @keyup.enter="doneEdit(todo)"
  36. @keyup.esc="cancelEdit(todo)">
  37. </li>
  38. </ul>
  39. </section>
  40. <footer class="footer" v-show="todos.length" v-cloak>
  41. <span class="todo-count">
  42. <strong>{{ remaining }}</strong> {{ remaining | pluralize }} left
  43. </span>
  44. <ul class="filters">
  45. <li><a href="#/all" :class="{ selected: visibility == 'all' }">All</a></li>
  46. <li><a href="#/active" :class="{ selected: visibility == 'active' }">Active</a></li>
  47. <li><a href="#/completed" :class="{ selected: visibility == 'completed' }">Completed</a></li>
  48. </ul>
  49. <button class="clear-completed" @click="removeCompleted" v-show="todos.length > remaining">
  50. Clear completed
  51. </button>
  52. </footer>
  53. </section>
  54. <footer class="info">
  55. <p>Double-click to edit a todo</p>
  56. <p>Written by <a href="http://evanyou.me">Evan You</a></p>
  57. <p>Part of <a href="http://todomvc.com">TodoMVC</a></p>
  58. </footer>
  59. <!-- testing/benchmark only -->
  60. <script>
  61. if (window.location.hash === '#test') {
  62. localStorage.clear()
  63. }
  64. var now = window.performance && window.performance.now
  65. ? function () { return window.performance.now() }
  66. : Date.now
  67. var metrics = { beforeLoad: now() }
  68. </script>
  69. <!-- end testing/bench -->
  70. <script src="../../dist/vue.js"></script>
  71. <script>metrics.afterLoad = now()</script>
  72. <script src="node_modules/director/build/director.js"></script>
  73. <script src="js/store.js"></script>
  74. <script>metrics.beforeRender = now()</script>
  75. <script src="js/app.js"></script>
  76. <script src="js/routes.js"></script>
  77. <script>
  78. app.$mount('.todoapp')
  79. </script>
  80. <script>metrics.afterRender = now()</script>
  81. <script src="perf.js"></script>
  82. </body>
  83. </html>