vue 基本语法

一、vue数据绑定、绑定属性、循环渲染数据
1.数据绑定
(1)变量的绑定:表达式{{ }}
(2)对象的绑定
(3)其他的绑定指令
v-html指令:绑定当前元素的html标签,可自动解析值里面的html标签
v-text指令:将值放进去,不会解析里面的html标签,也可进行变量的绑值

<template>
  <!-- 里面只能有一个根标签 -->
  <div id="app">
    <!--
       一、1.数据绑定 
    -->
    <!-- (1)变量的绑定:表达式{{}}-->
    <p>{{msg}}</p>
    <hr>
    <!-- (2)对象的绑定 -->
    <p>{{stu.name+"/"+stu.sex}}</p>
    <hr>
    <!-- (3)其他的绑定指令 -->
    <!-- v-html指令:绑定当前元素的html标签,可自动解析值里面的html标签 -->
    <p v-html="ht"></p>
    <hr>
    <!-- v-text指令:将值放进去,不会解析里面的html标签,也可进行变量的绑值-->
    <p v-text="ht"></p>
    <p v-text="msg"></p>
    <hr>
  </div>
</template>

<script>
//导出当前组件模块  作用于当前组件
export default{
  name:"app",
  data(){
    return{
      //数据属性的位置
      msg:"我是APP组件里的msg",
      stu:{
        name:"毛豆",
        sex:"男",
        age:"12"
      },
      ht:"<b>vue 你好</b>"
    }
  }
}
</script>

<style>
  /* 当前组件的css脚本 */ 
  /* scope  渲染当前的组件  局部的css */
</style>

2.绑定属性
利用变量值,动态操作元素属性
经典:操作图片的src

<template>
  <div id="app">
    <!--
       一、2.绑定属性 
       动态操作元素属性
       v-bind  简写形式  :
    -->
    <div v-bind:title="title"></div>
    <!-- 远程图片 -->
    <img v-bind:src="imgsrc">  
    <!-- 本地图片 -->
    <img :src="localsrc">
    <!-- 
      class类名称绑定:通过true变量控制类是否存在
      动态绑定多个class  {class:变量,class:变量}
    -->
    <div :class="{a_block:ishow}"></div>
    <div :class="ishow?'a_block':''"></div>
    <div :class="[isclass,isclass,isclass]"></div>
    <div :class="[ishow?isclass:'']"></div>
    <hr>
  </div>
</template>

<script>
export default{
  name:"app",
  data(){
    return{
      title:"我是vue-title",
      imgsrc:"https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=2362865390,2873183255&fm=85&app=52&f=JPEG?w=121&h=75&s=ED36A1571EB013BBDFA950450100A0E0",
      // require:请求,请求这个图片,拿到后再给到这儿
      localsrc:require("./assets/img/11.jpg"),
      ishow:true,
      isclass:"isbg"
    }
  }
}
</script>

<style>
  .a_block{
    width: 100px;
    height: 100px;
    background-color: red;
  }
  .isbg{
    border: 1px solid blue;
  }
</style>

3.循环渲染数据
v-for:可理解为重复,写给谁就是重复谁
使用v-for时添加key属性,保持唯一性

<template>
  <div id="app">
    <!--
       一、3.循环渲染数据
        v-for:可理解为重复,写给谁就是重复谁
        使用v-for时添加key属性,保持唯一性
    -->
    <ul>
      <!-- item 指里面的每一项;index 指当前循环里的索引 -->
      <li v-for="(item,index) in student" :key="index">
        {{item.name+"/"+item.age}}
      </li>
    </ul>
    <hr>
    
    <!-- 循环多层数据 -->
    <ul>
      <li v-for="(item,index) in people" :key="index">
        <p>{{item.name}}</p>
        <p>{{item.age}}</p>
        <ul>
          <li v-for="(it,key) in item.score" :key="key">
            <p>{{it.name+"/"+it.s}}</p>
          </li>
        </ul>
      </li>
    </ul>
  </div>
</template>

<script>
export default{
  name:"app",
  data(){
    return{
      student:[
          {name:"maodou",age:"20"},
          {name:"maodou",age:"20"},
          {name:"maodou",age:"20"},
          {name:"maodou",age:"20"},
          {name:"maodou",age:"20"},
          {name:"maodou",age:"20"}
      ],
      people:[
        {
          name:"张三",
          age:18,
          score:[
            {name:"Math",s:"120"},
            {name:"English",s:"110"},
            {name:"Chinese",s:"105"}
          ]
        }
      ]
    }
  }
}
</script>

二、 vue绑定属性
1.绑定class
传给 v-bind:class 一个对象,以动态地切换 class:

<template>
  <div id="app">
    <!--
       二、1.绑定class
    -->
    <!--元素属性的绑定-->
    <!-- 一般适用于img的src-->
    <!-- v-bind 可以简写为 :title -->
    <div v-bind:title="title"></div>
    <div :title="title"></div>
    <!-- 绑定html标签 -->
    <div v-html="h"></div>
    <!-- 绑定数据的另一种方式 -->
    <div v-text="msg"></div>
    <!-- 绑定class类名称 -->
    <div :class="{'red':cla,'blue':!cla}">
      绑定类名称
    </div>
  </div>
</template>

<script>
export default{
  name:"app",
  data(){
    return{
      msg: 'Welcome to Your Vue.js App',
      obj:{
        name:"张三"
      },
      title:"wo shi biao ti ",
      h:"<h1>我是h1</h1>",
      cla:true,
    }
  }
}
</script>
<style>
  .red{
    color: red;
  }
  .blue{
    color: blue;
  }
</style>

2.绑定style

<template>
  <div id="app">
    <!--
       二、动态绑定style行内样式
    -->
    <!-- 基本绑定 -->
    <div :style="{'width':w+'px','height':h+'px'}"></div>
    <!-- 数组绑定 -->
    <div :style="test">123</div>
    <div :style="test,test,test">456</div>
    <div :style="iscolor?test:''">789</div>
    <div :style="[test]">90</div>
  </div>
</template>

<script>
export default{
  name:"app",
  data(){
    return{
      w:40,
      h:20,
      test:{
        color:"red"
      },
      iscolor:false
    }
  }
}
</script>

三、vue数据双向、vue事件及事件对象、vue中ref获取dom元素节点以及MVVM

MVVM 结构:MV 指model数据改变影响view;VM指view数据改变影响model

1.数据双向绑定
v-model:绑定表单元素标签的值

<template>
  <div id="app">
    <!--
       三、1.数据双向绑定
       v-model:绑定表单元素标签的值
    -->
    <p>{{msg}}</p>
    <!-- 通过界面层修改 model数据层 -->
    <input v-model="msg">
  </div>
</template>

<script>
export default{
  name:"app",
  data(){
    return{
        msg:"我是好人"
    }
  }
}
</script>

2.vue事件及事件对象
v-bind:事件类型
@事件类型

<template>
  <div id="app">
    <!--
       三、2.事件
    -->
    <button v-on:click="getMsg">获取修改之后的数据</button>
    <!-- 事件绑定的简写方式 -->
    <button @click="getMsgLow">获取修改之后的数据</button>
    <ul>
      <li v-for="(item,index) in lists" :key="index" @click="getuserIndex(item)">
        {{item.name+"/"+item.age}}
      </li>
    </ul>
  </div>
</template>

<script>
export default{
  name:"app",
  data(){
    return{
        msg:"我是好人",
        lists:[
          {name:"a",age:"13"},
          {name:"b",age:"24"},
          {name:"c",age:"15"}
        ]

    }
  },
  methods:{
    //写执行的方法 使用es6写
    getMsg(){
      console.log(this.msg);
    },
    getMsgLow(e){
      //通过事件对象获取当前操作的dom元素节点
      let ele=e.target;
      console.log(ele);
    },
    getuserIndex(obj){
      console.log(obj);
    }
  }
}
</script>

3.vue中ref获取dom元素节点
(1)给元素命名:ref
(2)写代码获取:this.$refs.名字

<template>
  <div id="app">
    <!--
       三、3.vue中ref获取dom元素节点
    -->
    <div ref="block"></div>
    <button @click="getDom">获取dom元素</button>
  </div>
</template>

<script>
export default{
  name:"app",
  data(){
    return{
    getDom(){
      this.$refs.block.innerHTML="12";
      console.log(this.$refs.block);
    }
  }
}
</script>

4.给元素定义自定义属性

<template>
  <div id="app">
    <!--
       三、4.给元素定义自定义属性
    -->
    <button data-uid="你好!" @click="getAttribute">获取自定义属性</button>
  </div>
</template>
<script> 
export default{
  name:"app",
  data(){
    return{
    }
  },
  methods:{
    getAttribute(e){
      let el=e.target;
      let id=el.getAttribute("data-uid");
      console.log(id);
    }
  }
}
</script>

猜你喜欢

转载自blog.csdn.net/weixin_43675447/article/details/88721092