vue基础知识 上(juejin的各位应该不需要,我留着自己复习用)

80 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

1. MVVM

定义: MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。

1. 例子引入:

<!--view层 模板-->

<div id="app">

    {{message}}

</div>

<!-- 导入vue.js-->

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

<script>

    var vm = new Vue({

        el: "#app",

        // model

        data: {

            message: "hello vue!"

        }

    });

</script>

ViewModel在浏览器控制台,双向绑定

image.png

ViewModel与控制台内容相同

那改变控制台内容呢?

在控制台输入 vm.message="love";

大家就都变成     'love'

image.png

message Vue实现了dom监听数据绑定

2. 也可使用 v-bind 指令实现绑定

<div id="app">

    <span v-bind:title="message">

        鼠标悬浮看效果

    </span>

</div>

在鼠标悬浮时,显示hello vue!

在控制台更改后,显示更改后内容

如,

在控制台输入 `vm.message="love";`
则在鼠标悬浮时,显示 love

注意:v-bind可简写为: ":"

3. Vue if判断语句

在用法上,基本与其他的if判断一致

if else if else

<div id="app">

    <h1 v-if="type==='A'">A</h1>

    <h1 v-else-if="type==='B'">B</h1>

    <h1 v-else-if="type==='D'">D</h1>

    <h1 v-else>C</h1>

</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

<script>

    var vm = new Vue({

        el: "#app",

        // model

        data: {

            type:'A'

        }

    });

</script>

此时,ViewModel与控制台都为 A

image.png

若,向控制台更改,则为更改后内容

如,

在控制台输入 `vm.type="B";`
则在鼠标悬浮时,显示 B

image.png

4. Vue for循环语句

<div id="app">

    <li v-for="(item,index) in items">

        {{item.message}}--{{index}}

    </li>

</div>

<!-- 导入vue.js-->

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

<script>

    var vm = new Vue({

        el: "#app",

        // model

        data: {

             items:[

                 {message:'java'},

                 {message:'pythoon'},

                 {message:'sql'}

             ]

        }

    });

</script>

显示结果如下图所示

image.png

5. Vue绑定事件 v-on:click=

可简写为 @click

<div id="app">

    <button v-on:click="sayHi">click me</button>

</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

<script>

    var vm = new Vue({

        el: "#app",

        data: {

            message:"前端"

        },

        method:{//方法必须定义在vue的methon对象中

            sayHi:function (){

                alert(this.message);

            }

        }

    });

</script>

实现效果为:

点击按钮后出现警告弹窗,内容为前端

image.png

内容可通过在控制台更改message实现

6. Vue双向绑定 v-model

<div id="app">

    <textarea name="" id="" cols="30" rows="10" v-model="message"></textarea>

    {{message}}

</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

<script>

    var vm = new Vue({

        el: "#app",

        data: {

            message: "123"

        },

});

  image.png

可以在textarea中修改内容,也可以在控制台修改,都可以实现相同效果

image.png

6.1 v-model 绑定单选框并显示

<div id="app">

    性别:

    <input type="radio" name="sex" value="男" v-model="message">男

    <input type="radio" name="sex" value="女" v-model="message">女

    <p>

        选中了:{{message}}

    </p>

</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

<script>

    var vm = new Vue({

        el: "#app",

        data: {

            message: ""

        },

    });

</script>

image.png

image.png

6.2 v-model 绑定复选框并显示

<div id="app">

    下拉框:

    <select v-model="message" name="" id="">

        <option disabled value="">--请选择--</option>

        <option>A</option>

        <option>B</option>

        <option>C</option>

    </select>

    <span>value:{{message}}</span>

</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

<script>

    var vm = new Vue({

        el: "#app",

        data: {

            message: ""

        },

    });

</script>

image.png

image.png