Vue杂记之——v-model&&v-bind

1 篇文章 0 订阅
1 篇文章 0 订阅

写在前边

暑假的时候学vue,但是当时没有整理导致后来使用的时候对一些基础概念有些遗忘,尤其是自己的理解出现了些许偏差。在此查漏补缺

作为vue最基础的指令,v-bind和v-model无疑在数据传递,绑定等方面有着多种多样的应用,下面我们对他们进行一次汇总

v-bind

简写
  • “v-bind:“可以简写作”:”
绑定class
  • 动态切换

v-bind:class="{}"的写法可以动态的切换class,使得用户可以通过js切换不同样式的css,语法相较jq的addClass,removeClass更加简单直观

<!-- HTML -->
<ul class="box" v-bind:class="{‘textColor‘:isColor, ‘textSize‘:isSize}">
    <li>A</li>
    <li>B</li>
    <li>C</li>
</ul>

<!-- JS -->
var vm= new Vue({
    el:'.box',
    data:{
        isColor:true,
        isSize:true
    }
})

如图,可以通过控制对象中类命的至来决定是否选择其对应的css样式

  • 直接绑定

亦可直接绑定数据中的对象,相当于上一种情况的一种封装,在data种更容易辨别(尤其在data种属性较多的情况下)

<!-- HTML -->
<ul class="box" :class="classObject">
    <li>Vue</li>
    <li>Node</li>
    <li>React</li>
</ul>

<!-- CSS -->
var vm= new Vue({
    el:‘.box‘,
    data:{
        classObject:{
            "textColor" : true,
            "textSize" : false //不渲染,注意看下面的截图
        }
    }
})
数组语法
  • 将数组传给v-bind:class,以应用一个class列表
<!-- HTML -->
<ul class="box" :class="[classA, classB]">
    <li>Vue</li>
    <li>Node</li>
    <li>React</li>
</ul>

<!--JS-->
var vm= new Vue({
    el:".box",
    data:{
        classA : "textColor",
        classB : "textSize"
    }
})
  • 同时还可以根据条件切换class哦
    • 比如三目运算符
<!-- HTML -->
<ul class="box" :class="[isA ? classA : classB]">
    <li>Vue</li>
    <li>Node</li>
    <li>React</li>
</ul>

<!-- JS -->
var vm= new Vue({
    el : ".box",
    data : {
        classA : "textColor",
        classB : "textSize",
        isA : false 
    }
})
  • 对于多个class还可以这样
<div v-bind:class="[classA, { classB: isB, classC: isC }]">
绑定内联样式
  • (这个真的不太想写了,和上边的基本一样,只不过将属性弄到了data里边)
<!--HTML-->
<div id="box" :style="styleObject">Hello World</div>

<!-- JS -->
var vm= new Vue({
    el:‘#box‘,
    data:{
        styleObject:{
            color : "red",
            fontSize : "30px"
        }
    }

v-model

Vue种,v-model主要用域在input(中的button,select)、textarea元素上进行双向数据绑定。但其本质是语法糖,负责舰艇用户的输入事件以及更新数据

举个栗子:

<input v-model="message">
<input v-bind:value="message" v-on:input="message = $event.target.value" />
<input :value="message" @input="message = $event.target.value" />

虽然这哥仨长得不一样,但是本质上实现的功能是一样的

  • v-model 会忽略所有表单元素的 value、checked、selected 特性的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data选项中声明初始值

由于是双向绑定,所以无论更改父组件的值还是子组件的值,其对应(子/父)组件的值

不过具体细节呢,由于本人才疏学浅,就暂且不误导大家啦,下面的部分是我从简书大佬“Yi罐可乐”那里搬运的Vue 进阶教程之:详解 v-model

大佬主要解决了我对v-model中input作为触发事件名称的疑问,下面我们来一起看一下:

<div id="demo">
  <currency-input v-model="price"></currentcy-input>
  <span>{{price}}</span>
</div>
<script src="https://cdn.bootcss.com/vue/2.3.0/vue.js"></script>
<script>
Vue.component('currency-input', {
  template: `
    <span>
      <input
        ref="input"
        :value="value"
        <!--为什么这里把 'input' 作为触发事件的事件名?`input` 在哪定义的?-->
        @input="$emit('input', $event.target.value)"
      >
    </span>
  `,
  props: ['value'],// 为什么这里要用 value 属性,value在哪里定义的?貌似没找到啊?
})

var demo = new Vue({
  el: '#demo',
  data: {
    price: 100,
  }
})
</script>

事实上,这一切都是语法糖

<currency-input v-model="price"></currentcy-input>
<!--上行代码是下行的语法糖-->
<currency-input 
    :value="price" 
    @input="price = arguments[0]">
</currency-input>

给组件添加 v-model 属性时,默认会把 value 作为组件的属性,然后把 ‘input’ 值作为给组件绑定事件时的事件名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值