vue基础语法

本文介绍了Vue的基础语法,包括v-bind动态绑定元素属性(如href、class、style),v-on事件监听及其修饰符的使用,以及v-if/v-else、v-for、v-model等核心特性。实例演示了如何在实际项目中应用这些概念,如表单双向绑定、单选/多选框操作等。
摘要由CSDN通过智能技术生成

vue基础语法<一>

  1. v-bind:动态绑定(语法糖写法
    动态绑定href - - - v-bind: href=“值” (:href=“值”)
    动态绑定class - - - v-bind:class=“{类名: boolean}” (:class=“{类名: boolean}”)
    动态绑定style - - - v-bind:style=“{属性: ‘值’} " (:style=”{属性:‘值’ }")
    示例:
<div id="test">
  <a :href="address">百度</a>
  <h2 :class="{active: isActive}" :style="{color: textColor}">这里是动态绑定</h2>
</div>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#test',    //绑定id
    data: {         //数据存储,这里的数据可通过函数修改
      address: 'http://baidu.com',
      isActive: true,
      textColor: 'red'  //注意样式绑定时,值为字符串
    }
  })
  1. v-on: 事件监听 (语法糖写法 @
    参数问题:
    方法没有参数时,事件调用不加小括号
    方法定义是需要一个参数,但是事件调用时省略小括号,Vue会默认将浏览器生成的event事件对象传入方法
    方法定义时需要event事件对象,同时还需要其他参数,event参数需写成 $event

    修饰符:
    阻止事件冒泡:.stop

<div id="test">
  <div @click="divClick">
<!-- 如果不加 .stop 则点击按钮时,两个函数都会被执行,即事件冒泡,加上之后divClick事件不会执行-->
    <button @click.stop="bntClick">点击</button>  
  </div>
</div>

<script src="../js/vue.js"></script>
    <script>
    const app = new Vue({
      el: '#test',    //绑定id
      methods: {      //定义方法
        divClick() {
          console.log("被点击了");
        },
        bntClick() {
          console.log("被点击了");
        }
      }
    })
    </script>

阻止默认事件:.prevent
监听键盘的事件 :@keyup(键盘抬起)@keydown(键盘按下)@keyup.enter(输入回车)
监听组件:.native
只触发一次:.once

  1. v-if 和 v-else 和 v-else-if
    问题:v-if中vue由于虚拟DOM复用标签时没有清楚用户输入数据
    方法:加上key属性。key相同可复用,key不同则重新加载,不复用

    登录切换小案例:用户可选择密码登录或邮箱登录

<div id="test">
  <span v-if="isUser">
    <label for="userName"></label>
      用户账号
      <input text="text" id="userName" placeholder="用户账号" key="name"/>
      <!-- 如果input两者不加上不同的key属性,则当用户一开始使用账号登录,输完数据后中途想切换到邮箱
        登录,则中途的数据不会被清空
        -->
  </span>
  <span v-else>
    <label for="email"></label>
      用户邮箱
      <input text="text" id="email" placeholder="用户邮箱" key="email"/>
  </span>
  <button @click="isUser = !isUser">切换</button>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#test',    //绑定id
    data: {
      isUser: true
    }
  })
</script>

v-show与v-if:两者都是在条件为true时显示,但是当条件为false时,两者消失的方法不同。v-if 为false时,元素根本不会存在在DOM中,为true是再重新被创建。v-show为false时,元素还存在,只是给元素样式增加了display:none。

  1. v-for
    遍历数组 v-for=" (item , index) in info "
    遍历对象 v-for=" ( value , key , index ) in info" //注意:value在先
    数组中能做到响应式的方法:
    push() //在末尾添加
    pop() //删除最后一个
    shift() //删除第一个
    unshift() //在最前面添加元素
    splice() // 删除/插入/替换元素
    sort() //排序
    reverse() //倒序
    注意:通过索引值改变元素不能实时响应
  2. v-model : 表单双向绑定
    原理:v-bind绑定一个value属性 和 v-on 给当前元素绑定input事件
<div id="test">
<!--  <input type="text" v-model="message"/>-->
<!--  <input type="text" :value="message" v-on:input="valueChange"/>-->
  <input type="text" :value="message" v-on:input="message = $event.target.value"/>
  <h2>{{message}}</h2>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#test',    //绑定id
    data: {
     message: '你好啊'
    },
    methods: {
      valueChange(event){
        this.message = event.target.value;
      }
    }
  })
</script>

结合radio单选框

<div id="test">
  <label for="male">
    <input type="radio" id="male" v-model="sex" value=""/></label>
  <label for="female">
    <input type="radio" id="female" v-model="sex" value=""/></label>
  <h2>您选择的性别是: {{sex}}</h2>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#test',    //绑定id
    data: {
      sex: ''
    }
  })
</script>

结合checkbox使用
值绑定:实质上就是v-bind在input中的应用

<div id="test">
<!--  1. checkbox单选框-->
  <label for="agree">
    <input type="checkbox" id="agree" v-model="isAgree"/>同意条款
  </label>
  <h2>您的选择是: {{isAgree}}</h2>
<!--  只有同意条款才能点击下一步-->
  <button :disabled="!isAgree">下一步</button>
  <br/>

<!--  2.checkbox多选框-->
  <input type="checkbox" value="篮球" v-model="hobbies"/>篮球
  <input type="checkbox" value="足球" v-model="hobbies"/>足球
  <input type="checkbox" value="乒乓球" v-model="hobbies"/>乒乓球
  <input type="checkbox" value="羽毛球" v-model="hobbies"/>羽毛球
  <h2>您的爱好是:{{hobbies}}</h2>

<!--  3.值绑定   -->
  <label v-for="item in originHobbies">
    <input type="checkbox" :value="item" v-model="hobbies2"/>{{item}}
  </label>
  <h2>您的爱好是:{{hobbies2}}</h2>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#test',    //绑定id
    data: {
      isAgree: false,
      hobbies: [],
      hobbies2: [],
      originHobbies: ['篮球', '足球', '乒乓球', '高尔夫球', '排球']
    }
  })
</script>

修饰符:
.lazy 在回车或失去焦点时再实时绑定
.number 表单中输入的数据是字符型,该修饰符可规定规定Vue取出的是number型数据
.trim 去除去除数据中的空格

  1. 其他标签
    v-pre 预定义
    v-html 解析为html代码
    v-cloak 斗篷
    v-text
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值