zoukankan      html  css  js  c++  java
  • Vue入门1

    一、VueJs介绍

         Vue.js 是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专注于View 层。它的核心是 MVVM 中的 VM, 也就是 ViewModel。 ViewModel负责连接 View 和 Model,保证视图和数据的一致性;

    二、入门案例

          使用vue先引入vuejs-2.5.16.js的包;

         1.插值表达式

             (双大括号) 的文本插值

    <body>
    <div id="app">
        {{message}}  <!--Vue的插值表达式,把data中定义的数据显示到此处-->
        <!--三元运算符-->
        {{false ? "ok" : "false"}}
        <!--数字运算-->
        {{number+520}}
    </div>
    </body>
    
    <script>
        //view model
        //创建Vue对象
        new Vue({
            el: "#app",//由vue接管的id为app区域
            data: {
                message: "hello vue", //不加分号
                number: 100
            }
        });
    </script>

         2.常用系统指令

           2.1.v-on 

              可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码;

              v-on  可以用  @ 代替;

           2.2.v-on:click (@click)       

        <body>
            <div id="app">
                {{message}}  
                <button v-on:click="fun1('Vue')">vue的onclick</button>
            </div>
        </body>
    <script>
            //view model
            new Vue({
                el:"#app",
                data:{
                    message:"hello word"
                },
                methods:{
                    fun1(msg) {
                        alert("hello");
                        this.message=msg;
                    }
                }
            });
        </script>

              2.3. v-on:keydown

    <body>
            <div id="app">
                <div @mouseover="fun1" id="div">
                    <textarea @mouseover="fun2($event)">这是一个文件域</textarea>
                </div>
            </div>
        </body>
        <script>
        
            new Vue({
                el:"#app",
                methods:{
                    fun1:function () {
                        alert("鼠标到了div上");
                    },
                    fun2:function (event) {
                        alert("鼠标移到textarea上")
                        //停止事件 传播
                        event.stopPropagation();
                    }
                }
            });
        </script>

        2.4.v-mouseover(鼠标移动事件)

    <body>
    <div id="app">
        <!--keydown:键盘按下事件-->
        Vue:<input type="text" v-on:keydown="fun($event)">
    </div>
    </body>
    <script>
        //view model
        new Vue({
            el: "#app",
            methods: {
                /*$event 是vue中的事件对象和传统js中的event对象一样*/
                fun(event) {
                    var keyCode = event.keyCode;
                    if (keyCode > 105 || keyCode < 96) {
                        //不让键盘的案件起作用
                        event.preventDefault();
                    }
                }
            }
        });
    
    </script>

          

          2.5. @submit.prevent : 禁止访问

                  @mouseover.stop : 禁止行为传播

    <body>
    <div id="app">
        <form action="http://www.itheima.com" method="post" @submit.prevent>
            <input type="submit" value="提交">
        </form>
        <hr/>
        <div @mouseover="fun1" id="div">
              <textarea @mouseover.stop="fun2($event)">这是一个文本域</textarea>
        </div>
    </div>
    </body>
    <script>
        //view model
        new Vue({
            el:"#app",
            methods:{
                fun1:function () {
                    alert("鼠标到了div上");
                },
                fun2:function (event) {
                    alert("鼠标移到textarea上");
                }
            }
        });
    </script>

           2.6. v-text 与 v-html      

        <body>
            <div id="app">
                         <!--当作文本显示,不会解析html-->
                <div v-text="message"></div>
                        <!--解析html,显示内容-->
                <div v-html="message"></div>
            </div>
        </body>
        <script>
            //view model
             new Vue({
                 el:"#app",
                 data:{
                     message:"<h1>hello<h1>"
                 }
             })
        </script>

           2.7.v-bind

            注意:插值表达式不能用于html标签的属性取值,要给html的属性标签设置值,需要使用v-bind

          

    <body>
        <div id="app">
            <font size="5" v-bind:color="ys1">aaaaaaa</font>
            <font size="5" :color="ys2">bbbbbbb</font>
        </div>
        </body>
        <script>
            //view model
            // 插值表达式不能用于标签属性内部
            //v-bind简写为  :
            new Vue({
                el:"#app",
                data:{
                    ys1:"red",
                    ys2:"green"
                }
            })
        </script>

           2.8. v-model :双向绑定;

               既可以设值,也可以读取值

        <body>
        <div id="app">
    <form action="" method="post">
         用户名: <input type="text" name="username" v-model="user.username"><br/>
          密码:<input type="text" name="password" v-model="user.password"><br/>
         <button @click="fun">点击</button>
    </form>
        </div>
        </body>
        <script>
                 new Vue({
                     el:"#app",
                     data:{
                         user:{
                            username:"zhangsan",
                            password:"123"
                        }
                     },
                      methods:{
                          fun(){
                              alert(this.user.username);
                          }
                      }
                 })
        </script>

            2.9. v-for

    <body>
            <div id="app">
                <ul>
                    <!--key: 属性;value:值;index:索引
                       :key="index : 加上这个可以提高效率  
                      -->
                    <li v-for="(key,value,index) in product" :key="index">{{index+1}}.{{key}}--->{{value}}</li>
                </ul>
            </div>
        </body>
        <script>
            //view model
            new Vue({
                el:"#app",
                    data:{
                    product:{
                        id:1,
                        name:"笔记本",
                        perice:5000
                    }
                    }
            })
        </script>

           2.10.v-if 和 v-show 



    <body>
            <div id="app">
                <span v-if="flag">aaaaa</span>
                <span v-show="!flag">bbbbb</span>
                <button @click="toggle">切换</button>
     <input type="button" value="点一下" @click="random=Math.random()"/>{{random}}<br>
        <span v-if="random>0.75">大于0.75</span>
        <span v-else-if="random>0.5">大于0.5</span>
        <span v-else-if="random>0.25">大于0.25</span>
        <span v-else>大于0</span>

    </div> </body> <script> //view model new Vue({ el:"#app", data:{ flag:false }, methods:{ toggle:function () { this.flag=!this.flag; } } }) </script>
    
    
    
     

       

  • 相关阅读:
    深入理解 Netty编码流程及WriteAndFlush()的实现
    深入理解 Netty-解码器架构与常用解码器
    暑假集训Day 5 P3963 [TJOI2013] 奖学金
    暑假集训日记Day xx
    P3226 [HNOI2012]集合选数 状压dp(思维题)
    线段树(毒瘤)总结
    P3622 [APIO2007]动物园
    暑假集训Day 4 P4163 [SCOI2007]排列 (状压dp)
    暑假集训Day2 互不侵犯(状压dp)
    暑假集训Day2 状压dp 特殊方格棋盘
  • 原文地址:https://www.cnblogs.com/cqyp/p/12842661.html
Copyright © 2011-2022 走看看