Vue学习笔记06

简介: Vue学习笔记06

1. 收集表单数据


收集表单数据:


若:<input type="text"/>,则v-model收集的是value值,用户输入的就是value值。


若:<input type="radio"/>,则v-model收集的是value值,且要给标签配置value值。


若: <input type="checkbox" />


  1. 没有配置input的value属性,那么收集的就是checked(勾选or未勾选,是布尔值)


  1. 配置input的value属性:


(1) v-model的初始值是非数组,那么收集的就是checked(勾选or未勾选,是布尔值)


(2) v-model的初始值是数组,那么收集的的就是value组成的数组


备注: v-model的三个修饰符:


lazy: 失去焦点再收集数据


number: 输入字符串转为有效的数字


trim: 输入首尾空格过滤

<body>
     <div id="root">
         <form @submit.prevent="sendUserInfo">
             账号:<input type="text" name="" v-model.trim="userInfo.username"><br /><br />
             密码:<input type="password" v-model="userInfo.password"><br /><br />
             年龄:<input type="number" v-model.number="userInfo.age"><br /><br />
             性别:
             男 <input type="radio" name="sex" v-model="userInfo.sex" value="male">&nbsp;&nbsp;&nbsp;&nbsp;
             女 <input type="radio" name="sex" v-model="userInfo.sex" value="female"><br /><br />
             爱好:
             学习 <input type="checkbox" v-model="userInfo.hobby" value="study">
             打游戏 <input type="checkbox" v-model="userInfo.hobby" value="game">
             吃饭 <input type="checkbox" v-model="userInfo.hobby" value="eat"><br /><br />
             所属校区
             <select v-model="userInfo.city">
                 <option value="">请选择校区</option>
                 <option value="beiJing">北京</option>
                 <option value="shangHai">上海</option>
                 <option value="shenZhen">深圳</option>
                 <option value="wuHan">武汉</option>
             </select><br /><br />
             其它信息:
             <textarea v-model.lazy="userInfo.other"></textarea><br /><br />
             <input type="checkbox" v-model="userInfo.agree">阅读并接受<a href="www.baidu.com">协议</a><br /><br />
             <button>提交</button>
         </form>
     </div>
 </body>
 <script>
     new Vue({
         el: '#root',
         data() {
             return {
                 userInfo: {
                     username: '',
                     password: '',
                     age: '',
                     sex: '',
                     hobby: [],
                     city: '',
                     other: '',
                     agree: false
                 }
             }
         },
         methods: {
             sendUserInfo() {
                 console.log(this.userInfo);
                 alert(提交信息);
             }
         },
     })
 </script>


2. 过滤器


定义: 对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理)。


语法:


  1. 注册过滤器:Vue.filter(name,callback)或new Vue{filters:{}}


  1. 使用过滤器:{{ xxx│过滤器名}}或v-bind:属性=“xxx|过滤器名"


  1. 备注:


  1. 过滤器也可以接收额外参数、多个过滤器也可以串联


  1. 并没有改变原本的数据,是产生新的对应的数据
<head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
     <script src="js/vue.js"></script>
     <script src="https://cdn.bootcdn.net/ajax/libs/dayjs/1.10.6/dayjs.min.js"></script>
 </head>
 <body>
     <div id="root">
         <h1>显示格式化时间</h1>
         <!-- 计算属性实现 -->
         <h2>时间:{{fmTime}}</h2>
         <!-- methods实现 -->
         <h2>时间:{{getFmTime()}}</h2>
         <!-- 过滤器实现 -->
         <h2>时间:{{dateTime | timeFormater}}</h2>
         <!-- 过滤器的传参 -->
         <h2>时间:{{dateTime | timeFormater('YYYY-MM-DD')}}</h2>
         <!-- 过滤器的串联 -->
         <h2>时间:{{dateTime | timeFormater('YYYY-MM-DD') | mySlice}}</h2>
         <h2></h2>
     </div>
 </body>
 <script>
     //注册全局过滤器
     Vue.filter('mySlice2', function (value) {
         return value.slice(0, 5);
     });
     new Vue({
         el: '#root',
         data() {
             return {
                 dateTime: 1621561377603
             }
         },
         computed: {
             fmTime() {
                 return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')
             }
         },
         methods: {
             getFmTime() {
                 return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')
             }
         },
         filters: {
             // timeFormater(value) {
             //     return dayjs(value).format('YYYY年MM月DD日 HH:mm:ss')
             // }
             timeFormater(value, str = 'YYYY年MM月DD日 HH:mm:ss') {
                 return dayjs(value).format(str)
             },
             mySlice(value) {
                 return value.slice(0, 4)
             }
         }
     })
 </script>


相关文章
|
5天前
|
JavaScript
vue中使用@scroll不生效的问题
vue中使用@scroll不生效的问题
|
4天前
|
数据采集 JavaScript 搜索推荐
我们一起聊聊如何对Vue项目进行搜索引擎优化
【9月更文挑战第4天】Vue 项目的搜索引擎优化(SEO)较为复杂,因其内容默认由 JavaScript 渲染,部分搜索引擎难以索引。为提升 SEO 效果,可采用服务器端渲染(SSR)或预渲染,使用 Nuxt.js 或 Vue Server Renderer 实现 SSR,或利用 Prerender SPA Plugin 预渲染静态 HTML。此外,动态管理 Meta 标签、优化静态内容与 Sitemap、懒加载、图片优化、提升页面速度、设置正确的路由模式、使用结构化数据及构建良好外链均有益于 SEO。
37 11
|
8天前
|
存储 JavaScript
vue组件的五种传值方法(父子\兄弟\跨组件)
vue组件的五种传值方法(父子\兄弟\跨组件)
|
3天前
|
JavaScript 前端开发 搜索推荐
推荐5款免费、开箱即用的Vue后台管理系统模板
推荐5款免费、开箱即用的Vue后台管理系统模板
|
5天前
|
缓存 JavaScript 前端开发
vue中使用keep-alive的问题
vue中使用keep-alive的问题
|
7天前
|
JavaScript 前端开发
VUE技术栈-Vue的基本使用
尹正杰在其博客中介绍了Vue.js框架,它是一个渐进式JavaScript框架,由尤雨溪开发,结合了AngularJS的模板语法和数据绑定以及React的组件化和虚拟DOM技术,适合构建高效、轻量化的用户界面。
21 4
|
8天前
|
缓存 JavaScript 容器
vue动态组件化原理
【9月更文挑战第2天】vue动态组件化原理
22 2
|
11天前
|
资源调度 JavaScript 前端开发
Vue Router 的使用方式是什么
【8月更文挑战第30天】Vue Router 的使用方式是什么
11 2
|
11天前
|
JavaScript 前端开发 测试技术
Vue.js开发者必看!Vue Test Utils携手端到端测试,打造无懈可击的应用体验,引领前端测试新风尚!
【8月更文挑战第30天】随着Vue.js的普及,构建可靠的Vue应用至关重要。测试不仅能确保应用质量,还能提升开发效率。Vue Test Utils作为官方测试库,方便进行单元测试,而结合端到端(E2E)测试,则能构建全面的测试体系,保障应用稳定性。本文将带你深入了解如何使用Vue Test Utils进行单元测试,通过具体示例展示如何测试组件行为;并通过Cypress进行E2E测试,确保整个应用流程的正确性。无论是单元测试还是E2E测试,都能显著提高Vue应用的质量,让你更加自信地交付高质量的应用。
21 0
|
11天前
|
JavaScript 前端开发 UED
揭秘Vue.js高效开发:Vue Router如何让单页面应用路由管理变得如此简单?
【8月更文挑战第30天】随着Web应用复杂性的增加,单页面应用(SPA)因出色的用户体验和高效的页面加载性能而备受青睐。Vue.js凭借简洁的语法和灵活的组件系统成为构建SPA的热门选择,其官方路由管理器Vue Router则简化了路由管理。本文通过实战示例介绍如何利用Vue Router实现高效的SPA路由管理,包括命名路由、动态路由及其核心优势。
11 0