Vue浅谈

基础准备

1.下载并引用

     <script src="vue/vue.js"></script>
     <script src="vue/vue.min.js"></script>

实例01----字段和方法赋值

<body>
    <div id="app">
        <!-- 这个位置定义了sname,sex,age字段和show方法 -->
        <p>姓名:{{sname}}</p>
        <p>性别:{{sex}}</p>
        <p>年龄:{{age}}</p>
        <p>描述:{{show()}}</p>
    </div>
</body>
    <script>
     // new Vue实例化,el指定id,data给参数赋值,同理编写show方法的实现
        //关键字Methods
    new Vue({
        el:'#app',
        data:{
             sname:'张三',
             sex:'',
             age:'12'
        },
        methods:{
            show:function(){
                return this.sname+'是一个很听话的孩子';
            }
        }
    }) 
    </script>

效果

 

 实例02----vue的判断,这个目的主要是知道docoument获取的对象和el获取的对象一致

 

<body>
    <div id="app">
        <!-- 这个位置定义了sname,sex,age字段和show方法 -->
        <p>姓名:{{sname}}</p>
        <p>性别:{{sex}}</p>
        <p>年龄:{{age}}</p>
       <!-- <p>描述:{{show()}}</p>-->
    </div>
</body>
    <script>
    //定义一个数据对象
  var data = {sname:'李四',sex:'',age:'12'} 
  //指定操作的id new 一个vue 
  var vm = new Vue({
      el:'#app',
      //data 赋值给他
      data:data 
  })
  //注意一下格式$,===很明显这是个判断
    document.write(vm.$data === data) //true
         document.write('</br>')
//这个验证告诉我们vm中获取的idapp跟doucoument获取的对象完全一致
    document.write(vm.$el === document.getElementById('app')) // true
    </script>

 

 

 

 效果

 

  实例03----用 v-html 指令用于输出 html 代码

<body>
  <div id="app">
    <div v-html="message"></div>
</div>
</body>
    <script>
     new Vue({
     el: '#app',
    data: {
    message: '<h1>菜鸟教程不小心暴露了</h1>'
  }
})
    </script>

效果

 实例03---- v-bind指令

    <style>
     
    .class1{
   background: #444;
   color: #eee;
    }
    </style>
    </head>
<body>

<div id="app">
    <!--v-model绑定use-->
  <label for="r1">修改颜色</label><input type="checkbox" v-model="use" id="r1">
  <br><br>
   <!--通过指令绑定样式-->
  <div v-bind:class="{'class1': use}">
    v-bind:class 指令
  </div>
</div>
</body>
   <script>
   //这个位置是给app中的use对象赋值
new Vue({
    el: '#app',
  data:{
      use: true
  }
});
</script>

 

 效果点击checkbox切换背景颜色

 

扩展实例

    <style>
     .cs01{
      display:block;
     font-style: 
    }
 
        a{
            
            display: none;
        }
    </style>
    </head>
<body>

<div id="app">
    <!--v-model绑定use--> 
     姓名:张三 <input type="checkbox" v-model="use01" id="r1">显示成绩:<a  v-bind:class="{'cs01': use01}">语文:21;数学:32;英语 11</a> 
     <br> 
     姓名:李四 <input type="checkbox" v-model="use02" id="r2">显示成绩:<a  v-bind:class="{'cs01': use02}">语文:212;数学:32;英语 0</a>
     <br> 
     姓名:王五 <input type="checkbox" v-model="use03" id="r3">显示成绩:<a  v-bind:class="{'cs01': use03}">语文:1;数学:2;英语 3</a>
</div>
</body>
   <script>
 new Vue({
    el: '#app',
  data:{
       use01: false,
       use02: false,
       use03: false
  }
});
</script>

效果:点击哪个显示成绩显示哪个成绩的信息

 

 实例04---- v-bind,集合

 

<body>

<div id="app">
    <!--v-HTML绑定标签-->
    <div v-html="message"></div>
    <!--绑定内容-->
    <a>{{mess}}</a>
    <!--绑定显示和隐藏,true false-->
    <p v-if="seen">现在你看到我了</p>
    <!--v-bind:href 绑定超链接-->
    <a v-bind:href="url">菜鸟教程</a>
    <!--翻转字符串的信息-->
    <p>{{checkmess}}</p>
    <button v-on:click="reverseMessage">反转字符串</button>
</div>
</body>
<script>
  new Vue({
  el: '#app',
      //字段赋值的地方
  data: {
      message: '<h1>菜鸟教程</h1>',
      mess:'李四',
      seen:true,
      url: 'http://www.runoob.com',
      checkmess:'1234567'
  },
      methods: {
    reverseMessage: function () {
      this.checkmess = this.checkmess.split('').reverse().join('')
    }
  }
      
})
</script>

 

 实例05---v-if判断

<body>
  <div id="app">
    <p v-if="seen">现在你看到我了</p>
    <template v-if="ok">
      <h1>菜鸟教程</h1>
      <p>学的不仅是技术,更是梦想!</p>
      <p>哈哈哈,打字辛苦啊!!!</p>
    </template>
</div>
</body>
<script>
 new Vue({
  el: '#app',
  data: {
    seen: true,
    ok: true
  }
})
</script>

 实例06---v-if  v-else  v-else-if  这几个例子是用户输入信息显示相应的结果 view-show是隐藏和显示, v-if 是完全移除这个元素

<body>
    <div id="vApp">
         请输入本次成绩:
        <!--指定参数inp,用户输入的信息-->
        <input type="text" style="width: 100px;" v-model="inp">
        <!--这是第一个判断默认隐藏,成绩在相应的范围内显示与隐藏-->
        <h2 v-if="inp>80">优秀😜</h2>
        <h2 v-else-if="inp>60 && inp<=80">良好😥</h2>
        <h2 v-else="inp<60 ">不及格😞</h2>
        <div v-if="inp>80"><h3>自由玩耍</h3></div> 
        <div v-else-if="inp>60 && inp<=80"><h3>抄袭正确答案5遍</h3></div>
        <div v-else="inp<60 "><h3>抄袭正确答案10遍</h3></div>
        请输入动物的名称:
        <!--这个第三个判断的例子用户输入动物的名称显示相应的图片-->
        <input type="text" style="width: 100px;" v-model="animal"><br><br>
        <img src="vue/大象.jpg" v-show="animal==='大象'">
        <img src="vue/猴子.jpg" v-show="animal==='猴子'">
        <img src="vue/老虎.jpg" v-show="animal==='老虎'">
        <img src="vue/狮子.jpg" v-show="animal==='狮子'">
        <img src="vue/松鼠.jpg" v-show="animal==='松鼠'">
    </div>
</body>
<script>
 new Vue({
  el: '#vApp',
  data: {
    inp: 0,
    animal:''
  }
})
</script>

效果

 

 编译代码

 

  实例06--- site in sites 

    <style>
        th{
         width: 350px;
        }
    </style>
    </head>
<div id="app">
    <table border="1px;">
     <tr>
         <th v-for="site in sites"> {{ site.name }}</th>
     </tr>
     <tr v-for="site in students">
          <th v-for="site01 in site"> {{ site01.name }}</th>
          <th v-for="site01 in site"> {{ site01.class }}</th>
          <th v-for="site01 in site"> {{ site01.age }}</th>
     </tr>
    </table>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    sites: [
      { name: '姓名' },
      { name: '班级' },
      { name: '年龄' }
    ]  ,
      students: [
      { 
        student:{name:'张三',class:'三年级一班',age:'10'}
      },
      {  
      student:{name:'张三',class:'三年级二班',age:'11'}
      },
      { 
       student:{name:'张三',class:'三年级三班',age:'12'}
      }
    ] 
       
  }
})
</script>

效果

实例07--- 监听属性 watch

<body>
 <div id="zhuanhuan">
   千米:<input type="text" width="100px;" v-model = "kio">
     米:<input type="text" width="100px;" v-model = "mio">
    厘米:<input type="text" width="100px;" v-model = "cm">
</div>

</body>
<script type="text/javascript">
  var vm = new Vue({
     el:'#zhuanhuan',
      data:{
          kio:0,
           mio:0,
           cm:0
      },
      watch:{
          kio:function(val){
               this.mio = this.kio* 1000;
               this.cm = this.mio* 100;
          },
          mio:function(val){
              this.cm = this.mio * 100;
              this.kio = this.mio/1000;
          },
           cm:function(val){
              this.mio = this.cm  / 100;
              this.kio = this.mio / 1000;
          },
          
      }
  });
</script>

效果

 实例08--- 

Vue.js style(内联样式)

<body>
    <div id="app">
    <button @click="++fontSize">+点击放大</button> 
    <button @click="--fontSize">-点击缩小</button>
    <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</div>
    </div>
</body>
<script>
new Vue({
  el: '#app',
  data: {
    activeColor: 'green',
    fontSize: 20
  }
})
</script>

效果

 

posted @ 2020-09-15 16:24  人走茶亦凉  阅读(176)  评论(0编辑  收藏  举报