Vue.js之基础命令

指令:带有 v- 前缀 的 特殊 标签属性

1.v-html

可以解析style里的代码

<div id="app">
    <div v-html="msg"></div>  //就可以解析a标签和h3
</div>
<script>
const app = new Vue({
    el:'#app',
    data:{
        msg:
<a href="http://www.itheima.com">黑马程序员</a>
        <h3>学前端~来黑马!</h3>
    }
})
</script>

2.v-show vs v-if(元素隐藏)
v-show:
  1. 作用:控制元素显示隐藏

  2. 语法: v-show="表达式" 表达式值 true 显示, false 隐藏

  3. 场景: 频繁切换显示隐藏的场景

  4. v-show底层原理:切换css的display:none 来控制显示隐藏

V-if:
  1. 作用: 控制元素显示隐藏(条件渲染)

  2. 语法: v-if="表达式” 表达式值 true 显示, false 隐藏

  3. 场景:要么显示,要么隐藏,不频繁切换的场景

  4. v-if 底层原理:根据 判断条件 控制元素的 创建 和 移除(条件渲染)

<div id="app">
  <div v-show="flag"class="box">我是v-show控制的盒子</div>
  <div v-if="flag"class="box">我是v-if控制的盒子</div> 
</div>
<script>
const app = new Vue({
    el:'#app',
    data:{
       flag: false  //隐藏时才看出区别
       }
     })
</script>

3.v-else v-else-if

1.作用: 辅助 v-if 进行判断渲染

2.语法:v-else v-else-if="表达式"

3.注意: 需要紧挨着 v-if 一起使用

<div id="app">
    <p v-if="gender === 1">性别:男</p>  //注意这里的判断等于是===
    <p v-else>性别:女</p>  //v-else不能单独使用
    <hr>
    <p v-if="score >= 90">成绩评定A:奖励电脑一台 </p>
    <p v-else-if="score >= 70">成绩评定B:奖励周末</p>
    <p v-else-if="score >= 60">成绩评定C:奖励零食</p>
    <p v-else>成绩评定D:惩罚一周不能玩手机</p>
</div>
<script>
const app = new Vue({
    el:'#app',
    data:{
        gender:2  //决定了渲染性别的判断
        score:80  //决定了渲染成绩的判断
    }
})
</script>

4.v-on

1.作用: 注册事件=添加监听+提供处理逻辑

2.语法:

  • v-on:事件名="内联语句"(只适用于简单逻辑的代码)

  • v-on:事件名="methods中的函数名"

//v-on:事件名="内联语句"
<div id="app">
<button v-on:click="count--"> - </button>  //click是点击事件,可换别的
<span>{{ count }}</span>
<button v-on:click="count = count + 2"> + </button>
</div>
​
<script>
const app = new Vue({
    el:'#app',
    data:{
       count:100
    }
})
</script>
​
//简写:把v-on:换成@
@事件名
<button @click="count--"> - </button>  
//v-on:事件名="methods中的函数名"
const app = new Vue({
el:'#app',
data:{
// 提供数据
count:100
},
methods:{
//提供处理逻辑函数
fn(){
console.log('提供逻辑代码')
 }
 }
})
​
例题:<div id="app">
    <button @click="fn">切换显示隐藏</button>  //fn是methods的函数名
    <h1 v-show="isshow">黑马程序员</h1>
</div>
​
<script>
const app(实例名) = new Vue({
    el:'#app',
    data:{
    isShow: true
    },
    methods:{
        fn(){    //被执行的方法
            app.isShow = !isShow  //完成来回切换
   //这里面是不能直接获取data里的数据的,要通过this指向vue实例
       this.isShow = !this.isShow  //改实例名后照样能用
        }
    }
})
</script>

3.调用传参

<button @click="fn(参数1,参数2)">  //分别对应以下的a和b
    按钮
</button>
​
const app = new Vue({
el:'#app'
methods:{
fn(a,b){
console.log('这是一个fn函数')
        }
    }
})

例题:

<div id="app">
<div class="box">
<h3>小黑自动售货机</h3>
<button @click="buy(5)">可乐5元</button>    
<button @click="buy(10)">咖啡10元</button>
<button @click="buy(8)">牛奶8元</button>
</div>
<p>银行卡余额:{{ money }}元</p>
</div>
​
<script>
const app = new Vue({
    el:'#app',
    data:{
  money: 100
    },
methods:{
    buy(price){  //实现不同金额的传参
        this.money -= price
    }
  }
})
 </script>

5.v-bind
  1. 作用:动态的设置html的标签属性 → src url title ···

  2. 语法: v-bind:属性名="表达式" 把这个表达式算出来的值赋值给属性名

  3. 简写形式: : 属性名="表达式"

<d1v id= "app">
<img v-bind:src="imgUrl" v-bind:title="msg" alt="">
</div>
​
<script>
const app = new Vue({
    el:'#app',
    data:{
    imgUrl:'./imgs/10-02.png',  //动态设置了图片
     msg:'hello 波仔'
    }
})
</script>
​
简写:
<img :src="imgUrl" :title="msg" alt="">

例题:图片切换

核心思路分析: ① 数组存储图片路径 →[图片1,图片2,图片3,….] ② 准备下标 index,数组[下标]→ v-bind 设置 src 展示图片→>修改下标切换图片

<div id="app">
<button v-show="index>0" @click="index--">上一页</button>   //设置点击事件 index>0的时候才显示,否则隐藏
<div>
    //把图片动态渲染 ,通过数组下标访问每一项
<img :src="list[index]" alt="">
</div>
<button v-show="index<list.Length-1" @click="index++">下一页</button>
   //下标到达最大值的时候隐藏 ,小于最大值则显示
</div>

<script>
const app = new Vue({
    el:'#app',
    data:{
        index:0,    //设置动态下标
        list:[
./imgs/11-00.gif',
./imgs/11-01.gif',
./imgs/11-02.gif',
./imgs/11-03.gif',
./imgs/11-04.png',
./imgs/11-05.png,
]
    }
 })
</script>
v-bind 对于样式控制的增强-操作class

语法:class="对象/数组" ① 对象 →键就是类名,值是布尔值。如果值为 true,有这个类,否则没有这个类

<div class="box":class="{ 类名1:布尔值,类名2:布尔值}"></div>

② 数组 →数组中所有的类,都会添加到盒子上,本质就是一个 class 列表:

<div class="box" :class="[ 类名1,类名2,类名3]"></div>
v-bind 对于样式控制的增强-操作style

语法 :style="样式对象"

<div class="box" :style="{ CSS属性名1:CSS属性值,CSS属性名2:CSS属性值}"></div>

​​

6.v-for

1.作用:基于数据循环,多次渲染整个元素---数组,对象,数字

2.遍历数组语法: v-for="(item,index) in 数组" item 每一项,index 下标

<div id="app">
<h3>小黑水果店</h3>
    <ul>
	<li v-for="(item, index)in list">  //index不需要的话可以省略
        {{ item }}-{{ index }} //item获取每一项的名字 index获取下标
    </1i>
</ul>
</div>

<script>
const app = new Vue({
    el:'#app',
data:{
list:['西瓜','苹果','鸭梨','榴莲']
</script>

例题:

<div id="app">
<h3>小黑的书架</h3>
    <ul>
<li v-for="(item, index)in booksList" :key="item.id">//加上key更完善
<span>{{ item.name }}</span>
<span>{{ item.author }}</span>
    <!-- 注册点击事件→ 通过 id 进行删除数组中的 对应项 -->
<button @click="del(item.id)">删除</button>
  </1i>
 </ul>
</div>

<script>
  const app = new Vue({
el:'#app',
data:{
booksList:[
{ id: 1,name:'《红楼梦》',author:'曹雪芹'},
{ id: 2,name:'《西游记》',author:'吴承恩'},
{ id: 3,name:'《水浒传》',author:'施耐庵'},
{ id: 4,name:'《三国演义》',author:'罗贯中'}
    ]
     },
      //提供删除函数方法
      methods:{
          del(id){
   // console.log('删除',id)
   // 通过 id 进行删除数组中的 对应项 →filter(不会改变原数组)            
  // filter:根据条件,保留满足条件的对应项,得到一个新数组。
//console.log(this.booksList.filter(item =>item.id!=id))
 this.booksList = this.booksList.filter(item => item.id !== id)  
          }
      }
  }) 
</script>
3.v-for中的key

语法:key属性="唯一标识" 作用:给列表项添加的唯一标识。便于Vue进行列表项的正确排序复用

注意点: 1.key 的值只能是 字符串 或 数字类型 2.key 的值必须具有 唯一性 3.推荐使用 id 作为 key(唯一),不推荐使用 index作为 key(会变化,不对应)

<li v-for="(item, index) in xxx" :key="唯一值">

7.v-model(双向数据绑定)

作用:给 表单元素 使用,双向数据绑定 → 可以快速 获取 或 设置 表单元素内容

  • 数据变化→视图自动更新

  • 视图变化→数据自动更新

    可以快速[获取]或[设置]表单元素的内容

账户:<input type="text" v-model="username"><br><br>
密码:<input type="password" v-model="password"><br><br>
<button @click="login">登录</button>
<button @click="reset">重置</button>
<script>
const app = new Vue({
    el:'#app',
data:{
	username:'',
    password:''
},
    //定义登录和重置的方法
methods:{
	login(){
console.log(this.username,this.password)  //直接获取就行
    },
	reset(){
	this.username =''
	this.password =''
    }
  }
})
    </script>
v-model(应用于其他表单元素)
  • 输入框 input:text

  • 文本域 textarea

  • 复选框 input:checkbox

  • 单选框 input:radio

  • 下拉菜单 select

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值