demo
This commit is contained in:
		
							parent
							
								
									813f3d975d
								
							
						
					
					
						commit
						b317e10a83
					
				
							
								
								
									
										78
									
								
								src/App.vue
									
									
									
									
									
								
							
							
						
						
									
										78
									
								
								src/App.vue
									
									
									
									
									
								
							| @ -1,28 +1,82 @@ | |||||||
| <template> | <template> | ||||||
|   <div id="app"> |   <div class="app"> | ||||||
|     <img alt="Vue logo" src="./assets/logo.png"> |     <div> | ||||||
|     <HelloWorld msg="Welcome to Your Vue.js App"/> |       <button @click="isok = false">未完成</button> | ||||||
|  |       <button @click="isok = true">已完成</button> | ||||||
|  |     </div> | ||||||
|  |     <div v-show="!isok"> | ||||||
|  |       <div v-for="(item,index) in list" :key="index" v-show="item.isok == false"> | ||||||
|  |         <input type="checkbox" name="list" @click="setstate(index)" v-bind:id="'f-' + index" :checked="item.isok" /><label :for="'f-' + index" @click="setstate(index)">{{item.name}}</label><button v-on:click="remove(index)">删除</button> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |     <div v-show="isok"> | ||||||
|  |       <div v-for="(item,index) in list" :key="index" v-show="item.isok == true"> | ||||||
|  |         <input type="checkbox" name="list" @click="setstate(index)" :id="'t-' + index" :checked="item.isok" /><label @click="setstate(index)" :for="'t-' + index">{{item.name}}</label><button @click="remove(index)">删除</button> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |     <div> | ||||||
|  |       添加任务:<input type="text" v-model="todoname" @keyup.enter="add" /><button @click="add">添加</button> | ||||||
|  |     </div> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <script> | <script> | ||||||
| import HelloWorld from './components/HelloWorld.vue' |  | ||||||
| 
 | 
 | ||||||
| export default { | export default { | ||||||
|   name: 'App', |   name: 'App', | ||||||
|   components: { |   components: { | ||||||
|     HelloWorld |   }, | ||||||
|  |   data(){ | ||||||
|  |     return { | ||||||
|  |       isok:false, | ||||||
|  |       list:[{ | ||||||
|  |         name:"默认代办", | ||||||
|  |         isok:false | ||||||
|  |       }], | ||||||
|  |       todoname:"", | ||||||
|  |       time:0 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   methods:{ | ||||||
|  |     add(){ | ||||||
|  |       this.list.push({name: this.todoname,isok: false}); | ||||||
|  |       this.todoname = ""; | ||||||
|  |       localStorage.setItem("list",JSON.stringify(this.list)) | ||||||
|  |     }, | ||||||
|  |     remove(index){ | ||||||
|  |       this.list.splice(index,1), | ||||||
|  |       localStorage.setItem("list",JSON.stringify(this.list)) | ||||||
|  |     }, | ||||||
|  |     setstate(index){ | ||||||
|  |       if(this.time){ | ||||||
|  |         clearTimeout(this.time) | ||||||
|  |         this.time = 0; | ||||||
|  |       } | ||||||
|  |       this.time = setTimeout(()=>{ | ||||||
|  |         this.list[index].isok = !this.list[index].isok; | ||||||
|  |         this.$forceUpdate(); | ||||||
|  |         localStorage.setItem("list",JSON.stringify(this.list)) | ||||||
|  | 
 | ||||||
|  |       },100) | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   mounted(){ | ||||||
|  |     let list = localStorage.getItem("list"); | ||||||
|  |     this.list = list ? JSON.parse(list) : [{ | ||||||
|  |         name:"默认代办", | ||||||
|  |         isok:false | ||||||
|  |       }] | ||||||
|  |   }, | ||||||
|  |   watch:{ | ||||||
|  |      | ||||||
|   } |   } | ||||||
| } | } | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <style> | <style> | ||||||
| #app { | .app{ | ||||||
|   font-family: Avenir, Helvetica, Arial, sans-serif; |   display: flex; | ||||||
|   -webkit-font-smoothing: antialiased; |   flex-direction: column; | ||||||
|   -moz-osx-font-smoothing: grayscale; |   align-items: center; | ||||||
|   text-align: center; |  | ||||||
|   color: #2c3e50; |  | ||||||
|   margin-top: 60px; |  | ||||||
| } | } | ||||||
| </style> | </style> | ||||||
|  | |||||||
| @ -1,58 +0,0 @@ | |||||||
| <template> |  | ||||||
|   <div class="hello"> |  | ||||||
|     <h1>{{ msg }}</h1> |  | ||||||
|     <p> |  | ||||||
|       For a guide and recipes on how to configure / customize this project,<br> |  | ||||||
|       check out the |  | ||||||
|       <a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>. |  | ||||||
|     </p> |  | ||||||
|     <h3>Installed CLI Plugins</h3> |  | ||||||
|     <ul> |  | ||||||
|       <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li> |  | ||||||
|       <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li> |  | ||||||
|     </ul> |  | ||||||
|     <h3>Essential Links</h3> |  | ||||||
|     <ul> |  | ||||||
|       <li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li> |  | ||||||
|       <li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li> |  | ||||||
|       <li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li> |  | ||||||
|       <li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li> |  | ||||||
|       <li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li> |  | ||||||
|     </ul> |  | ||||||
|     <h3>Ecosystem</h3> |  | ||||||
|     <ul> |  | ||||||
|       <li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li> |  | ||||||
|       <li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li> |  | ||||||
|       <li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li> |  | ||||||
|       <li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li> |  | ||||||
|       <li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li> |  | ||||||
|     </ul> |  | ||||||
|   </div> |  | ||||||
| </template> |  | ||||||
| 
 |  | ||||||
| <script> |  | ||||||
| export default { |  | ||||||
|   name: 'HelloWorld', |  | ||||||
|   props: { |  | ||||||
|     msg: String |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| </script> |  | ||||||
| 
 |  | ||||||
| <!-- Add "scoped" attribute to limit CSS to this component only --> |  | ||||||
| <style scoped> |  | ||||||
| h3 { |  | ||||||
|   margin: 40px 0 0; |  | ||||||
| } |  | ||||||
| ul { |  | ||||||
|   list-style-type: none; |  | ||||||
|   padding: 0; |  | ||||||
| } |  | ||||||
| li { |  | ||||||
|   display: inline-block; |  | ||||||
|   margin: 0 10px; |  | ||||||
| } |  | ||||||
| a { |  | ||||||
|   color: #42b983; |  | ||||||
| } |  | ||||||
| </style> |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user