二.vue基本语句


回顾:
mvvm

const vm = new Vue({
  el: '#app', //挂载vue 
  data: { // 放数据  data属性 会直接挂载到实例上
    msg: 'xxx'
  },
  methods: { // 用于放置 实例方法 直接挂载到实例上
    changeMsg (){

    }
  }
})

{{}}
渲染数据
  {{}}
  1,js环境  如果写 变量 去实例上找有没有属性或者方法
  2, 渲染数据 要求 模板中 写表达式
  3,如果是全局变量 白名单里面才能运行

常用指令:
  扩展了 组件 的属性的功能
  <组件 v-指令名="值"/>
  值:是js环境 可以写表达式 会找实例上属性和方法
  v-model
  v-text 不重要
  v-html 渲染富文本

vm.$mount(document.querySelector('#app'))

其他常用指令

v-bind:属性
  将标签(组件),的普通属性的值 变成动态的值
  值:变成js环境 里面可以写表达式、如果有变量 会去找实例上的属性和方法
  简写:
    :属性
    例
    <div id="app">
        <a v-bind:href="href">跳转</a>
    </div>
    const vm= new Vue({
        el:"#app",
        data:{
            href:"https://www.bilibili.com/video/BV12J411m7MG?p=14"
        }
    })
v-on:事件
  将标签 事件 的事件函数 与 这个指令的 值进行绑定
    值:js环境 找 实例上的方法(只找方法)
  简写:
    @事件
注意:
  <button @click="fn">
  <button @click="fn()">
  绑定事件两种方式
    方式1,fn是事件函数  函数的第一个参数就是事件对象(没有兼容)
    方式2,fn不是事件函数 就是普通方法调用
  问题?
    方式2绑定 如何获取事件对象
    Vue提供了一个构造函数Vue的原型上 提供了一个变量 $event
    方式2绑定的使用场景
      这个函数在调用时需要传参
    
  取消冒泡  e.stopPropagation()
  阻止默认事件 e.preventDefault()

  事件修饰符
    .stop 阻止冒泡
    .prevent 阻止默认事件
    .once 只触发一次
    .capture 在捕获阶段就提前触发
    .self   只能由自己触发方法,后代元素无法触发
    可同时使用多个 例如@click.self.stop

条件渲染 v-if v-else-if v-else

v-show 控制元素 显示、消失 功能和v-if比较类似
异同
相同:都是元素的显示、消失状态 值为true显示 false 隐藏
不同:v-show控制元素的display属性 v-if 是 移除元素
使用场景:
1,代码块需要频繁切换状态 此时应该使用v-show(性能消耗更小)
2,代码块初始不显示 且 不频繁切换 v-if(v-if是惰性,初始为false情况下,代码块不加载)

else

<div class="box" v-if="isShow">div1</div>
  
<div class="box2" v-else>div2</div>
当 isShow为true时,div1显示 div2消失
      false时 div2显示 div1消失
注意:
  v-else所在的元素 必须是v-if所在元素的下一个兄弟(除了空格)

v-else-if 使用场景不多

    <div class="box" v-if="num%3==0">div1</div>
    <div class="box2" v-else-if="num%3==1">div2</div>
    <div class="box3" v-else>div3</div>
  num++
    注意:
      v-if v-else-if v-else必须是连续兄弟,且中间没有其他兄弟 v-else放在最后一个 if放到第一个
条件与循环例子
v-if:属性

<div id="app-3">
  <p v-if="seen">现在你看到我了</p>
</div>

var app3 = new Vue({
  el: '#app-3',
  data: {
    seen: true
  }
})
/*继续在控制台输入 app3.seen = false,你会发现之前显示的消息消失了。
原理是:整个将这条 <p v-if="seen">现在你看到我了</p> 语句注释了*/

列表渲染 循环

    <!-- 
	1.数组的循环中获取的是值,index是下标
	2.对象的循环中获取的值,key是键,index是下标
	3.包含对象的数组遍历的是对象,使用ele.key可以获取值
-->
	<ul>
      <li v-for="el in arr">
        <!-- el作用域是li的内部 -->
        {{ el }}
        <!-- arr要写在data内部,el是值 -->
      </li>
    </ul>

    <ul>
      <li v-for="(el,index) in arr"> 
        <!-- 循环同时得到下标 -->
        <!-- el是值,index是下标 -->
        {{ el }} ==> {{index}}
      </li>
    </ul>
<!--循环的例子-->
<body>
    <div id="app">
        <!--  -->
        <ul>
            <li v-for="(el,index) in objArr">
              <!-- el作用域是li的内部 -->
              {{ el}}
              <!-- el是值,index是下标 -->
            </li>
            <li v-for="a in arr">
                {{a}}
            </li>
            <li v-for="(v,key,index) in obj">
                {{v +"."+key+"."+index}}
            </li>
          </ul>
    </div>
</body>
<script type="text/javascript" src="./vue.js" ></script>
<script type="text/javascript">
    const vm = new Vue({
        el:"#app",
        data:{
            arr:[1,2,3,4,5,6],
            objArr:[{
                name:"jack",
                age:"18"
            },{
                name:"rose",
                age:"20"
            }],
            obj:{
                name:"礼金卡",
                age:18,
            }

        }
    })

:class 类名设置

1.不管是数组还是字符串,都会将值全部取出作为类名
	<div :class="cls1">div1</div>  // 会解析为data中cls1属性的值
    cls:["box1","box2"]  会设置成 
	<div class="box1 box2">div1</div>
2.对象:取决于对象的键(属性)
	<p :class = "cls"></p>
	data:{
            cls:{value:1,
            name:"li"}
        }
	====><p class="value name"></p>
3.对象:取决于对象的属性和值,值为真,类名为属性,值为假,类名为空 
    <div :class="{active:1==1}"></div> // div class = active取决于 对象值是不是真
    <div :class="{active:isActive}"></div>
    <div :class="['box3','box2',cls1,{active:true}]"></div>
4.同样可以使用三元运算
	<p :class = "cls.value==2?cls:'add'"></p>
	data:{
            cls:{value:1}
        }
	<p class="add"></p>
	<!-- 若为真则是键-->

:style

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值