index.html 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Todo</title>
  5. <meta charset="utf-8">
  6. <link rel="stylesheet" type="text/css" href="bower_components/todomvc-common/base.css">
  7. <style> [v-cloak] { display: none; } </style>
  8. </head>
  9. <body>
  10. <section id="todoapp">
  11. <header id="header">
  12. <h1>todos</h1>
  13. <input
  14. id="new-todo"
  15. autofocus
  16. autocomplete="off"
  17. placeholder="What needs to be done?"
  18. v-model="newTodo"
  19. v-on="keyup:addTodo | key enter"
  20. >
  21. </header>
  22. <section id="main" v-show="todos.length" v-cloak>
  23. <input
  24. id="toggle-all"
  25. type="checkbox"
  26. v-model="allDone"
  27. >
  28. <ul id="todo-list">
  29. <li
  30. class="todo"
  31. v-repeat="todos | filterTodos"
  32. v-class="
  33. completed : completed,
  34. editing : this == editedTodo
  35. "
  36. >
  37. <div class="view">
  38. <input
  39. class="toggle"
  40. type="checkbox"
  41. v-model="completed"
  42. >
  43. <label v-text="title" v-on="dblclick: editTodo(this)"></label>
  44. <button class="destroy" v-on="click: removeTodo(this)"></button>
  45. </div>
  46. <input
  47. class="edit"
  48. type="text"
  49. v-model="title"
  50. v-todo-focus="this == editedTodo"
  51. v-on="
  52. blur : doneEdit(this),
  53. keyup : doneEdit(this) | key enter,
  54. keyup : cancelEdit(this) | key esc
  55. "
  56. >
  57. </li>
  58. </ul>
  59. </section>
  60. <footer id="footer" v-show="todos.length" v-cloak>
  61. <span id="todo-count">
  62. <strong v-text="remaining"></strong> {{remaining | pluralize item}} left
  63. </span>
  64. <ul id="filters">
  65. <li><a href="#/all" v-class="selected: activeFilter == 'all'">All</a></li>
  66. <li><a href="#/active" v-class="selected: activeFilter == 'active'">Active</a></li>
  67. <li><a href="#/completed" v-class="selected: activeFilter == 'completed'">Completed</a></li>
  68. </ul>
  69. <button id="clear-completed" v-on="click:removeCompleted" v-show="todos.length > remaining">
  70. Clear completed ({{todos.length - remaining}})
  71. </button>
  72. </footer>
  73. </section>
  74. <footer id="info">
  75. <p>Double-click to edit a todo</p>
  76. <p>Powered by <a href="http://vuejs.org">Vue.js</a></p>
  77. <p>Created by <a href="http://evanyou.me">Evan You</a></p>
  78. </footer>
  79. <!-- testing/benchmark only -->
  80. <script>
  81. var isPhantom = navigator.userAgent.indexOf('PhantomJS') > -1
  82. if (isPhantom) {
  83. localStorage.clear()
  84. } else {
  85. var now = window.performance && window.performance.now
  86. ? function () { return window.performance.now() }
  87. : Date.now
  88. var metrics = { beforeLoad: now() }
  89. }
  90. </script>
  91. <!-- end testing/bench -->
  92. <script src="../../dist/vue.js"></script>
  93. <script>metrics.afterLoad = now()</script>
  94. <script src="bower_components/director/director.js"></script>
  95. <script src="js/store.js"></script>
  96. <script>metrics.beforeRender = now()</script>
  97. <script src="js/app.js"></script>
  98. <script src="js/routes.js"></script>
  99. <script>metrics.afterRender = now()</script>
  100. <script src="js/perf.js"></script>
  101. </body>
  102. </html>