vue涉及有关案例大全

简单计算器

图:

在这里插入图片描述

需求分析:

实现简单的数值累加计算
思路解析:

  1. 通过v-model指令实现数值a何数值b的绑定

  2. 给计算按钮绑定事件,实现计算逻辑

  3. 将结果绑定到对应位置

代码实现:

<body>  
	<div id="app">    
		<h1>简单计算器</h1>    
		<div>      
			<span>数值A:</span>      
			<span>        
				<input type="text" v-model='a'>      
			</span>    
		</div>    
		<div>      
			<span>数值B:</span>      
			<span>        
				<input type="text" v-model='b'>      
			</span>    
		</div>    
		<div>      
			<button v-on:click='handle'>计算</button>    
		</div>    
		<div>      
			<span>计算结果:</span>      
			<span v-text='result'></span>    
		</div>  
		</div>  
		<script type="text/javascript" src="js/vue.js"></script>  
		<script type="text/javascript">    
		/*      简单计算器案例     */    
		var vm = new Vue({      
			el: '#app',      
			data: {        
				a: '',        
				b: '',        
				result: ''      
			},      
			methods: {        
				handle: function(){          
					// 实现计算逻辑          
					this.result = parseInt(this.a) + parseInt(this.b);        
				}      
			}    
		});  
	</script>
	</body>

选项卡

1.html结构

    <div id="app">        
    	<div class="tab">            
    		<!--  tab栏  -->            
    		<ul>                
    			<li class="active">apple</li>                
    			<li class="">orange</li>                
    			<li class="">lemon</li>            
    		</ul>              
    		<!--  对应显示的图片 -->            
    		<div class="current"><img src="img/apple.png"></div>            
    		<div class=""><img src="img/orange.png"></div>            
    		<div class=""><img src="img/lemon.png"></div>        
    	</div>    
    </div>


2.提供的数据

	list: [{                    
			id: 1,                    
			title: 'apple',                    
			path: 'img/apple.png'                
		}, {                    
			id: 2,                    
			title: 'orange',                    
			path: 'img/orange.png'                
		}, {                    
			id: 3,                    
			title: 'lemon',                    
			path: 'img/lemon.png'                
		}]

3.把数据渲染到页面

  • 把tab栏中数据替换到页面上
  • 把data中title利用v-for循环渲染到页面上
  • 把data中path利用v-for玄幻渲染到页面上
	<div id="app">        
		<div class="tab">              
			<ul>                  
				<!--                      
				   1、绑定key的作用 提高Vue的性能                     
				   2、 key 需要是唯一的标识 所以需要使用id, 也可以使用index ,                        index 也是唯一的                     
				   3、 item 是 数组中对应的每一项                      
				   4、 index 是 每一项的 索引                
				 -->                   
				    <li :key='item.id' v-for='(item,index) in list'>{{item.title}}</li>              
			</ul>              
			<div  :key='item.id' v-for='(item, index) in list'>                    
				<!-- :  是 v-bind 的简写   绑定属性使用 v-bind -->                    
				<img :src="item.path">              
			</div>        
		</div>    
	</div>
<script>    
	new  Vue({        
		//  指定 操作元素 是 id 为app 的         
		el: '#app',            
			data: {                
				list: [{                    
					id: 1,                    
					title: 'apple',                    
					path: 'img/apple.png'                
				}, {                    
					id: 2,                    
					title: 'orange',                    
					path: 'img/orange.png'                
				}, {                    
					id: 3,                    
					title: 'lemon',                    
					path: 'img/lemon.png'                
				}]            
			}    
		})
</script>

4.给每一个tab栏添加事件,并让选中的高亮

  • 4.1让默认的第一项tab栏高亮
    • tab栏高亮 通过添加类名active来实现(css avtive的样式已经提前写好)
      • 在tab中定义一个默认索引currentlndex为0
      • 给第一个li添加active类名
        • 通过动态绑定class来实现第一个li的索引为0和current 的值刚好相等
        • currentindex ===index 如果相等 则添加类名active 否则 添加空类名
  • 4.2 让默认的第一栏tab栏对应的div显示
    • 实现思路 和第一个tab实现思路一样 只不过 这里控制第一个div显示的类名 是current
 <ul>        
 		<!-- 动态绑定class   有 active   类名高亮  无 active   不高亮-->        
 	<li  :class='currentIndex==index?"active":""'            
 		:key='item.id' v-for='(item,index) in list'            
 		>{{item.title}}</li>   
 </ul>     
 	<!-- 动态绑定class   有 current  类名显示  无 current  隐藏-->   
 <div :class='currentIndex==index?"current":""'                 
 	:key='item.id' v-for='(item, index) in list'>         
 	<!-- :  是 v-bind 的简写   绑定属性使用 v-bind -->         
 	<img :src="item.path">   
 </div>  
 <script>     
 	new  Vue({         
 		el: '#app',             
 			data: {                 
 			currentIndex: 0, // 选项卡当前的索引  默认为 0                   
 			list: [{                     
 				id: 1,                     
 				title: 'apple',                     
 				path: 'img/apple.png'                 
 			}, {                     
 				id: 2,                     
 				title: 'orange',                     
 				path: 'img/orange.png'                 
 			}, {                     
 				id: 3,                     
 				title: 'lemon',                     
 				path: 'img/lemon.png'                 
 			}]             
 		}     
 	})  
 </script>
  • 4.3 点击每一个tab栏 当前的高亮 其他的取消高亮
    • 给每一个li添加点击事件
    • 让当前的索引index和当前currentindex的值进行比较
    • 如果相等 则当前li添加active类名 当前的li高亮 当前对应索引的div添加current当前div显示 其他隐藏
	<div id="app">        
		<div class="tab">            
			<ul>                
				<!--  通过v-on 添加点击事件   需要把当前li 的索引传过去                 -->                
				<li v-on:click='change(index)'                                              
					:class='currentIndex==index?"active":""'                                       
					:key='item.id'                     
					v-for='(item,index) in list'>{{item.title}}</li>            
			</ul>            
			<div :class='currentIndex==index?"current":""'                  
				:key='item.id' v-for='(item, index) in list'>                
				<img :src="item.path">            
			</div>        
		</div>    
	</div>
<script>    
	new  Vue({        
		el: '#app',            
			data: {                
				currentIndex: 0, // 选项卡当前的索引  默认为 0                  
				list: [{                    
					id: 1,                    
					title: 'apple',                    
					path: 'img/apple.png'                
				}, {                    
					id: 2,                    
					title: 'orange',                    
					path: 'img/orange.png'                
				}, {                    
					id: 3,                    
					title: 'lemon',                    
					path: 'img/lemon.png'                
				}]            
			},            
			methods: {                
				change: function(index) {                    
					// 通过传入过来的索引来让当前的  currentIndex  和点击的index 值 相等                     
					//  从而实现 控制类名                        
					this.currentIndex = index;                
				}            
			}        
		})
</script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js 是一种流行的前端框架,用于构建用户界面。在 Vue.js 中,处理文件上传通常需要使用后端技术来处理文件,并将文件保存到服务器上。MultipartFile 是一个常见的后端技术概念,用于处理文件上传。 下面是一个简单的 Vue.js 文件上传案例,使用 MultipartFile 来处理文件上传: 1. 在 Vue 组件中,添加一个文件选择输入框和一个上传按钮: ```html <template> <div> <input type="file" ref="fileInput" @change="handleFileChange"> <button @click="uploadFile">上传</button> </div> </template> ``` 2. 在 Vue 组件的 methods 中,定义处理文件选择和上传的方法: ```javascript <script> export default { methods: { handleFileChange(event) { this.selectedFile = event.target.files[0]; }, uploadFile() { const formData = new FormData(); formData.append('file', this.selectedFile); // 发送文件上传请求到后端 // 使用 MultipartFile 来处理文件上传 // 这里可以使用 axios 或其他网络请求库发送请求 // 示例代码: axios.post('/upload', formData) .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); } } } </script> ``` 在上述代码中,`handleFileChange` 方法用于获取用户选择的文件,并将其保存到组件的 `selectedFile` 数据中。`uploadFile` 方法将选中的文件封装为 FormData 对象,并发送到后端的 `/upload` 接口进行处理。 请注意,上述代码只是一个简单的示例,实际的文件上传过程可能涉及更多的逻辑和验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值